値の取得はどちらを使うのか?
まずは公式マニュアルの概要を見てみましょう。
開発者向け機能:スクリプト:$p.getValue
概要:
編集画面上で対象の項目名から値を取得するメソッドの説明です。 対象の項目の値を利用するときに使用してください。
開発者向け機能:スクリプト:$p.getControl
概要:
編集画面上で対象の項目名から要素を取得するメソッドの説明です。対象の項目名のid名や値を出力したいときに使用してください。
一見同じように見えますが、さらに詳細を確認すると以下の違いがあるようです。
「$p.getValue」は、編集画面上で入力された値を「文字列」として取得します。スクリプト内で実際に値を計算や加工したい時に活用することが多く、利用する際は必要に応じて型変換を行います。
「$p.getControl」は、編集画面上の対象項目に対応する要素(DOMオブジェクト)自体を取得します。
"値だけではない"というところが「$p.getValue」と異なります。対象項目のid名や値、画面上の表示状態などを操作・取得したいときに使用します。
上記を踏まえて、実際に編集画面から値の取得を行ってみましょう。今回は記録テーブルを使い、図のように項目を表示しています。
スクリプトの出力先に「編集」を指定し、下記サンプルコードを設定します。
「$p.getValue」は公式マニュアルへも掲載されている通り、項目名(Title、DateA)または表示名(資格名、取得日)での指定が可能です。サンプルでは「表示名」にて指定しています。
$p.events.on_editor_load = function () {
console.log("以下、$p.getValue('項目名または表示名') での値取得");
console.log('ID: ' + $p.getValue('ID')); // 入力した文字列を取得
console.log('バージョン: ' + $p.getValue('バージョン')); // 入力した文字列を取得
console.log('資格名: ' + $p.getValue('資格名')); // 入力した文字列を取得
console.log('取得者: ' + $p.getValue('取得者')); // 選択した選択肢のコード(レコードID)を取得
console.log('所属: ' + $p.getValue('所属')); // 入力した文字列を取得
console.log('取得日: ' + $p.getValue('取得日')); // 「文字列」として取得
console.log('更新期限: ' + $p.getValue('更新期限')); // 「文字列」として取得
console.log('費用: ' + $p.getValue('費用')); // 書式(通貨)変換前の数値を取得
console.log('有効/無効: ' + $p.getValue('有効/無効')); // 選択した選択肢の値を取得
console.log('チェック済: ' + $p.getValue('チェック済')); // true/falseの真偽値を取得
console.log('備考: ' + $p.getValue('備考')); // 入力した文字列を取得
console.log('添付資料: ' + $p.getValue('添付資料')); // 配列形式の「文字列」として取得
console.log('--- --- --- ---');
console.log("以下、$p.getControl('項目の名前') での値取得");
console.log('ID: ' + $p.getControl('ResultId').text()); // 読取専用項目のため、.text()で取得
console.log('バージョン: ' + $p.getControl('Ver').text()); // 読取専用項目のため、.text()で取得
console.log('資格名: ' + $p.getControl('Title').val());
console.log('取得者: ' + $p.getControl('ClassC').val());
console.log('所属: ' + $p.getControl('ClassB').val());
console.log('取得日: ' + $p.getControl('DateA').val());
console.log('更新期限: ' + $p.getControl('DateB').val());
console.log('費用: ' + $p.getControl('NumA').val());
console.log('有効/無効: ' + $p.getControl('Status').val());
console.log('チェック済: ' + $p.getControl('CheckA').val());
console.log('備考: ' + $p.getControl('Body').val());
console.log('添付資料: ' + $p.getControl('AttachmentsA').val());
}
では実際に編集画面でコンソールを開いてみましょう。


サンプルコード内に記載したコメントの通りに、値が取得されていることが確認できました。
なお、「有効/無効(状況項目)」のように '値' ではなく '表示名' を取得したい場合には、「$p.getControl」で次のように記述します。
$p.events.on_editor_load = function () {
console.log("$p.getControl('項目の名前') で '値' を取得");
console.log('有効/無効: ' + $p.getControl('Status').val());
console.log("$p.getControl('項目の名前') で '表示名' を取得");
console.log('有効/無効: ' + $p.getControl('Status').find('option:selected').text());
}


まとめ
いかがでしたか?
項目の値の取得方法が増えたことにより、スクリプトにチャレンジするハードルがさらに緩和されたのではないでしょうか?
値だけで良ければ「$p.getValue」、表示名など値以外も使う場合は「$p.getControl」を使うと良いでしょう。
このように「何を」「どんな形」で使いたいのか、これらを事前に明確にしてスクリプトの作成に取り組むと、今回ご紹介した関数も選びやすくなると思います。
弊社ではプリザンターをご使用中、または、これからご使用になられる方向けに、運用ノウハウ集、プリザンター逆引き辞典、スタイル・スクリプトサンプル集の販売を行っております。
また、 プリザンターからのExcel帳票出力・PDF帳票出力の支援パック販売 も行っております。
プリザンター導入の支援や、スクリプト開発などの支援も行っておりますので、まずは気軽にご相談ください。
※ご相談の内容によっては有料となる場合がございます。予めご了承ください。
☆☆☆
ブログ内容への質問や追加説明をご希望の方は【 問い合わせフォーム 】からお気軽にお問い合わせください
☆☆☆
スクリプトで項目の値を取得する
こんにちは、シーイーシーカスタマサービスの森山です。
プリザンターのマニュアルにはスリプトのサンプルが豊富に用意されており、「標準機能で実現できないことをスクリプトでやってみよう!」とチャレンジされる方も多いと思います。
弊社販売の書籍でも スクリプトのサンプル を紹介していますが、よくある実装内容として「項目の値を取得して処理を行う」というものがあります。
この値の取得について、バージョン1.4.12.0 にて関数「$p.getValue」が実装されました。
これまで値の取得には「$p.getControl」が使われることが多かったと思いますが、「$p.getValue」とはどう違うのでしょうか?
今回は「$p.getValue」と「$p.getControl」での値の取得についてご紹介します。