##はじめに
こんにちは!
最近、ServiceNowという物を触り始めたので、普及の為に記事書いてみようと思います。
ちなみに、始めての投稿になりますので、見苦しい点あるかもしれませんが、温かく見守ってください。
##実装環境
ServiceNow バージョン:Rome
##やりたいこと
サービスカタログでユーザーコンボをグループで絞り込みしたい。
ロールなら下記の画像のように簡単に設定できるが、グループではちょっと工夫が必要っぽいので、実装してみた。
#設定内容
1.まずはスクリプトインクルードを作ります。
※注意:手抜きスクリプトです。いきなりクエリを返すようなクソコードです。実際につくるならメンバーのIDを返す方がいいと思います。
var GroupUtils = Class.create();
GroupUtils.prototype = {
initialize: function() {
},
getGmemberQuery: function(gname){
var userIds = [];
var gr = new GlideRecord('sys_user_grmember');
gr.addQuery('group.name',gname);
gr.query();
while(gr.next()){
userIds.push(gr.user.toString());
}
return 'sys_idIN' + userIds.toString();
},
type: 'GroupUtils'
};
2.カタログアイテム変数の参照修飾子に先ほど作ったスクリプトを書いてきます。引数には絞り込みたいグループ名を入れます。
これで、sys_id in(メンバー1, メンバー2・・・)みたいなクエリになります。
javascript:'active=true^'+new GroupUtils().getGmemberQuery('テストグループ')
3.動作検証!
「テストグループ」には下記の5名を入れています。
彼らが出れば成功です。
##おわりに
今回はカタログアイテムでグループでフィルタリングする方法について記載してみました。
これからも定期的に役に立ちそうなもの書いていけたらと思います!