ServiceNowでスクリプトを書く時の自分用メモ
テーブルにもしもししたいとき使うおまじない「GlideRecord」
もしもししたテーブルを変数に格納していろいろつけたら便利~というメモ
削除、挿入はあんまり使わないので書きませんでした・・・
「システム定義」>「スクリプト - バックグラウンド」からお試しできますが、
updateは本当に更新されちゃうので注意です!重いな~と連打すると痛い目を見ました
シングルクォートで行けるときとダブルクォートで行けるときの違いがわかりません・・・怒られたら直してます・・・ホョョ
スクリプト | 説明 |
---|---|
.addActiveQuery() | アクティブがTrueになっているレコードにのみクエリを発行する |
.addInactiveQuery() | アクティブがFalseになっているレコードにのみクエリを発行する |
.addEncodedQuery(String Query) | クエリ内で指定したパラメーター設定でレコードをフィルターする |
.getRowCount() | 行数を取得してくれるオプション |
.addJoinQuery(‘テーブル名’) | 関連テーブルにあるレコードについてフィルターしてくれる |
.addNotNullQuery(‘カラム名’) | カラム名にて指定した列項目がNullでないレコードのみにフィルターをかける |
.addNullQuery(‘カラム名’) | カラム名にて指定した列項目がNullのレコードのみにフィルターをかける |
.setLimit(‘数字’) | 数字で指定した数のみ結果を返す。該当レコードが多すぎる場合に使えそう。 |
.setWorkflow(true/false) | ビジネスルールのONOFF設定が可能 |
.orderBy(‘カラム名’) | 指定列にて昇順ソートできる |
.orderByDesc(‘カラム名’) | 指定列にて降順ソートできる |
.update() | 更新を反映させる |
↓インシデントリストから優先度1のレコードを抽出してインシデント番号を返すスクリプト
var gr = new GlideRecord(‘incident’);
gr.addQuery(‘priority’,’1’);
gr.query();
while(gr.next()){
gs.print(gr.number);
}
↓addJoinQuery(‘テーブル名’)の使い方
例)インシデントテーブル内で、関連PRBの「優先度が1」となっているレコードを抽出する
var b = new GlideRecord(‘problem’);
var a =b.addJoinQuery(‘incident’);
a.addCondition(‘priority’.’1’);
b.query();
while(b.next())
{
gs.print(“このPRB番号は:”+b.number);
}
↓.update()の使い方
例)優先度1のインシデントレコードにのみ、説明欄を更新する(下記内容だと、既存の説明文の前に「更新されてるよ:」をつける更新をしている)
var Test= new GlideRecord(‘incident’);
Test.addQuery(‘priority’,’1’);
Test.query();
while(Test.next())
{
Test.short_description =”更新されてるよ:”+ Test.short_description;
Test.update();
}