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