スクリプト可能サービスカタログ変数
スクリプティングを使用して、スコープ指定された環境およびスコープ指定されていない環境内のテーブルから任意の要求アイテム変数を参照できます。
変数参照の例を次に示します。
current.variables.<variable_name>ここで current は現在のレコードを指し、<variable_name> は変数の名前です。
注:
JavaScript から変数を参照するには、その変数に名前が必要です。
変数が変数セットの一部である場合、変数を current.variables.<variable_name> または current.variables.<variable_set_name>.<variable_name> として参照できます。
変数セットは、Service Catalog の第一級要素でもあります。変数と同様に、変数セットには読み取り、書き込み、作成の各ロールがあります。変数セットにロールが指定されている場合、ロールはそのセット内の変数に適用されます。個々の変数のロールは、変数セットのロールによって上書きされます。
変数を出力する
var original = current.variables.original_number;
gs.print(original);
変数を設定する
current.variables.name = "Auto-Generated:" + current.variables.asset_tag;
変数からフィールドセットでインベントリアイテムを作成する
doCreation();
function doCreation ( ) {
var create = current.variables.create_item;
if (create == 'true') { // we want to create an asset
var computer = new GlideRecord('cmdb_ci_computer');
computer.initialize();
computer.asset_tag = current.variables.asset_tag;
computer.serial_number = current.variables.serial_number;
computer.name = current.variables.name;
computer.manufacturer = current.variables.company;
computer.insert(); } }
GlideRecord に関連付けられた変数と変数セットの GlideElementVariable を取得する
now_GR.variables
GlideRecord に関連付けられた変数の名前の値のペアを取得する
now_GR.variables.getVariableValue();
タスクレコード内の変数の GlideElementVariable のリストを取得する
now_GR.variables.getElements();
タスクレコード内の変数 (複数行の変数セットを含む) の GlideElementVariable のリストを取得する
now_GR.variables.getElements(true);
注:
getElements() メソッドは、ラベル、ブレーク、コンテナ終了、コンテナ分割などのフォーマッター変数を除く、指定されたタスクレコードに存在するすべての変数を返します。
GlideElementVariable の API
- now_GR.variables.<var_name>.isMultiRow():GlideElementVariable が複数行の変数セットであるか変数であるかどうかを取得します。
- now_GR.variables.<var_name>.getQuestion():変数の Question オブジェクトを取得します。変数 (isMultiRow() は false) にのみ適用され、複数行の変数セットには適用されません。
- now_GR.variables.<var_name>.getLabel():GlideElementVariable のラベルを取得します。変数には、変数のラベルが返されます。複数行の変数セットには、変数セットのタイトルが返されます。
- now_GR.variables.<var_name>.canRead():ユーザーが変数または複数行の変数セットを表示できるかどうかを取得します。
- now_GR.variables.<var_name>.canWrite():ユーザーが変数または複数行の変数セットを編集できるかどうかを取得します。
- now_GR.variables.<var_name>.getDecryptedValue():マスク済み変数の復号化された値を取得します。マスク済み変数にのみ適用されます。
- now_GR.variables.<var_name>.getRows():複数行の変数セットの行オブジェクトのリストを取得します。複数行の変数セット (isMultiRow() は true) にのみ適用されます。
- now_GR.variables.<var_name>.getRowCount():複数行の変数セットの行数を取得します。複数行の変数セット (isMultiRow() は true) にのみ適用されます。
タスクテーブルの GlideRecord の変数にアクセスする例
var now_GR = new GlideRecord('sc_req_item');
if (now_GR.get('635a1f5387320300e0ef0cf888cb0b73')) {
var variables = now_GR.variables.getElements();
for (var i=0;i<variables.length;i++) {
var question = variables[i].getQuestion();
gs.log(question.getLabel() + ":" + question.getValue())
}
}
タスクテーブルの GlideRecord の複数行の変数セットにアクセスする例
var now_GR = new GlideRecord('sc_req_item');
now_GR.get('02c38dcd87013300e0ef0cf888cb0bb2');
var vars = now_GR.variables.getElements(true);
for (var i=0; i<vars.length; i++) {
var now_V = vars[i];
if (now_V.isMultiRow()) {
var rows = now_V.getRows();
for (var j=0; j<now_V.getRowCount(); j++) {
var row = rows[j];
var cells = row.getCells();
for (var k=0; k<cells.length; k++) {
var cell = cells[k];
gs.info(cell.getLabel() + ":" + cell.getCellDisplayValue())
}
}
}
}
複数行の変数セット
| 運用 | 使用法 |
|---|---|
| テーブルの操作 | |
| JSON アレイの値を文字列として返す | |
| 複数行の変数セットの値を設定する |
注: 順序付けされた (キー、値) ペアのアレイも入力として適用できます。 |
| 複数行変数セットの列 var1 の値を取得する | |
| 変数セット var1 の値を設定する |
注: 順序付けされた (キー、値) ペアのアレイも入力として適用できます。 |
| 行の操作 | |
| 現在の行数を取得する | |
| 変数「i」で指定された行を返す - getRow(<int> i) | |
| <var_name> にマップされた質問列のセル値を取得する | |
| <var_name> にマップされた質問列のセル値を設定する | |
| <var_name> にマップされた質問列のセル値を設定する | |
| テーブルの最後に空の行を追加し、スクリプト可能オブジェクトを返す | |
| 行を削除する | |
注意と制限
- // table_Var の単一の列
- now_GR.variables.table_var.var1
- now_GR.variables.table_var.var1 = <val>
- 前のビジネスルールに変数を設定することのみが可能です。後のルールに設定された変数はデータベースに書き込まれません。
- 変数との名前空間の衝突を防ぐ方法は用意されていません。computer_speed という名前の 2 つの変数を作成すると、そのうちの 1 つだけが表示され、2 番目の変数で最初の変数が上書きされます。
- 日付/時刻変数は、システム内の他のすべての日付と同じタイムゾーンのフォーマットおよびストレージルールを使用します。それらは GMT で内部的に保存されますが、表示用にはユーザーのローカルのタイムゾーンと形式に変換されます。