特定のグループに所属するユーザーのみを参照する方法について

NaoyaT
Tera Expert
スクリプト初心者ですが、設定方法をご教示いただきたいです。
カタログアイテムの参照変数で、特定のグループに所属するグループのみを参照させたいのですが、
sys_userテーブルにグループ情報が無いため、スクリプトで実装を試みていますがうまく設定ができません。
 
現在、参照変数を以下の通り設定しています。
 
■[Service Catalog]-[Maintain Items]-[Variables] 
Type:Reference
Reference:User[sys_user]
User reference qualifer:Advanced
Reference qualifer:
----------------------
var grmem = new GlideRecord('sys_user_grmember');
gr.addquery('group','test_group_name');
gr.query();
var usrIDs = [];
 
while(grmem.next()){
usrIDs.push(grmem.User.sys_id.toString());
}
 
'sys_idIN' + usrIDs.join(',');
----------------------
1 件の受理された解決策

@NaoyaT 

script I shared should work fine if you are using correct group name from sys_user_group table and also if there are users under that

small correction in the GlideRecord object

Here is the updated script with group name

javascript: var query; var grmem = new GlideRecord('sys_user_grmember');
gr.addQuery('group.name','test_group_name');
gr.query();
var usrIDs = [];
while(gr.next()){
usrIDs.push(gr.user.sys_id.toString());
}
query = 'sys_idIN' + usrIDs.join(',');
query;

If you want to use group sysId then use this

javascript: var query; var grmem = new GlideRecord('sys_user_grmember');
gr.addQuery('group','groupSysId');
gr.query();
var usrIDs = [];
while(gr.next()){
usrIDs.push(gr.user.sys_id.toString());
}
query = 'sys_idIN' + usrIDs.join(',');
query;

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

元の投稿で解決策を見る

5件の返信5

Ankur Bawiskar
Tera Patron
Tera Patron

@NaoyaT 

I believe you want to see users from the particular group

try this

javascript: var query; var grmem = new GlideRecord('sys_user_grmember');
gr.addQuery('group.name','test_group_name');
gr.query();
var usrIDs = [];
while(grmem.next()){
usrIDs.push(gr.user.sys_id.toString());
}
query = 'sys_idIN' + usrIDs.join(',');
query;

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

@Ankur Bawiskar 

Thank you for your response.

I have set up the script you suggested but could not achieve it.
It seems to me that the reason is that I am filtering by group name.
Is it possible to achieve this by group sysid instead of group name?

@NaoyaT 

script I shared should work fine if you are using correct group name from sys_user_group table and also if there are users under that

small correction in the GlideRecord object

Here is the updated script with group name

javascript: var query; var grmem = new GlideRecord('sys_user_grmember');
gr.addQuery('group.name','test_group_name');
gr.query();
var usrIDs = [];
while(gr.next()){
usrIDs.push(gr.user.sys_id.toString());
}
query = 'sys_idIN' + usrIDs.join(',');
query;

If you want to use group sysId then use this

javascript: var query; var grmem = new GlideRecord('sys_user_grmember');
gr.addQuery('group','groupSysId');
gr.query();
var usrIDs = [];
while(gr.next()){
usrIDs.push(gr.user.sys_id.toString());
}
query = 'sys_idIN' + usrIDs.join(',');
query;

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

@NaoyaT 

Thank you for marking my response as helpful.

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader