GlideQueryとは
ITAMに含まれるServer APIですが、独立したPluginとしてインストール可能です。
たまたま見つけたのですが、GlideRecordよりも便利そうな気がしたので調べてみました。
プラットフォーム
Paris
GlideQueryの良い点
コードがシンプルになる
コードをシンプルにして可読性が上がります。
C#のLINQに似ています。
userquery.js
var gq = new GlideQuery('sys_user')
.where('company.name', '!=', '')
.select('name', 'company$DISPLAY')
.limit(5)
.forEach(function (user) {
gs.info(user.name + '@' + user.company$DISPLAY);
});
/* 実行結果
*** Script: Lucius Bagnoli@ACME Japan
*** Script: Jimmie Barninger@ACME South America
*** Script: Melinda Carleton@ACME UK
*** Script: Jewel Agresta@ACME UK
*** Script: Sean Bonnet@ACME North America
*/
Fail Fast
GlideRecordではクエリが間違っていても実行されますが、GlideQueryはエラーがあったらそこで止まります。
gliderecord.js
var gr = new GlideRecord('sys_user');
gr.addQuery('activate', false); //正しくは'active'
gr.query();
while(gr.next()){
gs.info(gr.name);
}
GlideRecordもエラーは出るのですが、、
そのまま誤ったクエリを実行してしまいます。
GlideQueryの場合、エラーを返して止まります。
誤った更新や削除が避けられそうです。
glidequery.js
var gq = new GlideQuery('sys_user')
.where('activate', false)
.select('name')
.forEach(function (user) {
gs.info(user.name);
});
使い方
ScriptインクルードにGlideQueryがあるか確認します。
現在はPlatformの機能ではないため、ITAMを使用していない場合はないと思います。
GlideQueryが存在しなければ、プラグインをインストールします。
参考
おまけ
いくつか試して見たサンプル
レコードの存在チェック
checkexist.js
var isExist = new GlideQuery('sys_user')
.where('first_name', 'Lucius')
.selectOne()
.isPresent();
gs.info(isExist);
レコードの挿入
insertuser.js
var hoge = new GlideQuery('sys_user')
.insert({
first_name: 'First',
last_name: 'Last',
email: 'hoge@example.com'
})
.get();
gs.info(JSON.stringify(hoge));
レコードの一括更新
updatemultiple.js
var gq = new GlideQuery('sys_user')
.where('company.name', '!=', '')
.limit(3)
.updateMultiple({ active: false });