Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

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
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
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