LoginSignup
4
2

More than 1 year has passed since last update.

ServiceNowでスクリプトを書きたい時のメモ

Last updated at Posted at 2022-05-07

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();
}
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2