We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

Unable to get the RITM details using background script

Emp 53
Tera Contributor

Hi All,

Below is the script i written but it's not working. every time it's moving to else condition instead of if condition. can you help me on this

 

var userId = '123';
    var reqQuery = "";
    function getUserGroups(userSysId) {
        var groupIds = [];
        var groupMemGr = new GlideRecord('sys_user_grmember');
        groupMemGr.addQuery('user.user_name', userId);
        groupMemGr.query();
        while (groupMemGr.next()) {
            groupIds.push(groupMemGr.getValue('group'));
        }
    }

    if (global.JSUtil.notNil(userId)) {
        var userGr = new GlideRecord('sys_user');
        if (!userGr.get('user_name', userId)) {
            sendError('user id not defined ' + userId);
        }

        var groupIds = getUserGroups(userGr.getUniqueValue());

        if (groupIds.length > 0)
            reqQuery += '^assignment_groupIN' + groupIds.toString() + '^ORrequested_for.user_name=' + userId;
        else
            reqQuery += '^requested_for.user_name=' + userId;

    }
1 ACCEPTED SOLUTION

AnveshKumar M
Tera Sage

Hi @Emp 53 

This is because you are not returning the array in your function. Try the below script.

 

var userId = '123';
var reqQuery = "";

function getUserGroups(userSysId) {
	var groupIds = [];
	var groupMemGr = new GlideRecord('sys_user_grmember');
	groupMemGr.addQuery('user.user_name', userId);
	groupMemGr.query();
	while (groupMemGr.next()) {
		groupIds.push(groupMemGr.getValue('group'));
	}
	return groupIds;
}

if (global.JSUtil.notNil(userId)) {
	
	var userGr = new GlideRecord('sys_user');
	
	if (!userGr.get('user_name', userId)) {
            sendError('user id not defined ' + userId);
			
	}
	
	var groupIds = getUserGroups(userGr.getUniqueValue());
	
	if (groupIds.length > 0)
		reqQuery += '^assignment_groupIN' + groupIds.toString() + '^ORrequested_for.user_name=' + userId;
	else
		reqQuery += '^requested_for.user_name=' + userId;
}

 

Please mark my answer helpful and accept as a solution if it helped 👍✔️

Thanks,
Anvesh

View solution in original post

1 REPLY 1

AnveshKumar M
Tera Sage

Hi @Emp 53 

This is because you are not returning the array in your function. Try the below script.

 

var userId = '123';
var reqQuery = "";

function getUserGroups(userSysId) {
	var groupIds = [];
	var groupMemGr = new GlideRecord('sys_user_grmember');
	groupMemGr.addQuery('user.user_name', userId);
	groupMemGr.query();
	while (groupMemGr.next()) {
		groupIds.push(groupMemGr.getValue('group'));
	}
	return groupIds;
}

if (global.JSUtil.notNil(userId)) {
	
	var userGr = new GlideRecord('sys_user');
	
	if (!userGr.get('user_name', userId)) {
            sendError('user id not defined ' + userId);
			
	}
	
	var groupIds = getUserGroups(userGr.getUniqueValue());
	
	if (groupIds.length > 0)
		reqQuery += '^assignment_groupIN' + groupIds.toString() + '^ORrequested_for.user_name=' + userId;
	else
		reqQuery += '^requested_for.user_name=' + userId;
}

 

Please mark my answer helpful and accept as a solution if it helped 👍✔️

Thanks,
Anvesh