ABC group members is not part of Level 1 and Level 2 cost center users

raj149
Giga Guru

Hello Experts,

 

My requirement is 

 

I want users details in a report who is part of ABC group is not part of  cost center table Level1 approver(reference field) and level 2 approver(reference field).

 

 

So I created script include but when i run report it is taking so much of time to get results and instance also not working 

In report the condition is sysID is javascript: TestL1L2Approver();

Is there any mistake in my script 

 

function TestL1L2Approver(){
mem =[];
var grMembers = new GlideRecord('sys_user_grmember');
 
    grMembers.addQuery('group' ,'e5302b2d1b4e11506ece2fc5604bcb5c');
 
    grMembers.query();
 
    while (grMembers.next()) {
 
        var userSysID = grMembers.user.toString();
 
        var Levelone = new GlideRecord('cmn_cost_center');
 
        Levelone.addQuery('u_level_1_approver', userSysID);
 
        Levelone.query();
 
        while (!Levelone.next()) {
 
            var Leveltwo = new GlideRecord('cmn_cost_center');
 
            Leveltwo.addQuery('u_level_2_approver', userSysID);
 
            Leveltwo.query();
 
            while(!Leveltwo.next()) {
 
                mem.push(grMembers.user);
 
            }
        }
    }
return mem;
}
 
 
Best Regards,
Raj
15 REPLIES 15

Ankur Bawiskar
Tera Patron
Tera Patron

@raj149 

you can optimize the script as this

function TestL1L2Approver() {
	var mem = [];
	var grMembers = new GlideRecord('sys_user_grmember');
	grMembers.addQuery('group', 'e5302b2d1b4e11506ece2fc5604bcb5c');
	grMembers.query();
	while (grMembers.next()) {
		var userSysID = grMembers.user.toString();
		var Levelone = new GlideRecord('cmn_cost_center');
		Levelone.addQuery('u_level_1_approver','!=',userSysID);
		Levelone.addQuery('u_level_2_approver','!=',userSysID);
		Levelone.query();
		if (!Levelone.next()) {
			mem.push(grMembers.user.toString());
		}
	}
	return mem;
}

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

Hello @Ankur Bawiskar 

 

For testing purpose i have added 5 test users in group.

But that script is not working 

raj149_0-1693811453721.png

 

 

Best Regards,

Raj

@raj149 

you need to use filter IS ONE OF

also return mem.toString()

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

Hello @Ankur Bawiskar 

 

used IS ONE OF filter and added return mem.toString() but no luck.

please try it once from your end. 

 

Thanks in advance

 

Best Regards

Raj