How to pass multiple sysid in caller filed(drop down) via script include and ref qualifier

klbhargav3
Tera Contributor

script include:

var autopopulateusergroup = Class.create();
autopopulateusergroup.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getUser: function() {
        var gr = new GlideRecord("sys_user_grmember");
        gr.addQuery("user", gs.getUserID());
        gr.query();
        var grp = [];
        while (gr.next()) {
            grp.push(gr.group.toString());
        }
        if (grp.length > 0) {
            var user = new GlideRecord("sys_user_grmember");
            user.addQuery("group", "IN", grp);
            user.query();
            var userName = [];
            while (user.next()) {
                userName.push(user.user);
            }
            return "sys_idIN"+userName.join(",");
        }
    },

    type: 'autopopulateusergroup'
});
 
ref qualifier:
javascript:new autopopulateusergroup().getUser()
 
I am seeing only one user name in drop down . how to get all user based on current login user group members
in calller drop down 
1 ACCEPTED SOLUTION

Sandeep Rajput
Tera Patron
Tera Patron

@klbhargav3 Please update your script as follows.

 

var autopopulateusergroup = Class.create();
autopopulateusergroup.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getUser: function() {
        var gr = new GlideRecord("sys_user_grmember");
        gr.addQuery("user", gs.getUserID());
        gr.query();
        var grp = [];
        while (gr.next()) {
            grp.push(gr.group.toString());
        }
        if (grp.length > 0) {
            var user = new GlideRecord("sys_user_grmember");
            user.addQuery("group", "IN", grp);
            user.query();
            var userName = [];
            while (user.next()) {
		if(userName.indexOf(user.user.toString())==-1)
                userName.push(user.user.toString());				
            }
			
            return "sys_idIN"+userName.join(",");
        }
    },

    type: 'autopopulateusergroup'
});

Hope this helps.

 

View solution in original post

4 REPLIES 4

Sandeep Rajput
Tera Patron
Tera Patron

@klbhargav3 Please update your script as follows.

 

var autopopulateusergroup = Class.create();
autopopulateusergroup.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getUser: function() {
        var gr = new GlideRecord("sys_user_grmember");
        gr.addQuery("user", gs.getUserID());
        gr.query();
        var grp = [];
        while (gr.next()) {
            grp.push(gr.group.toString());
        }
        if (grp.length > 0) {
            var user = new GlideRecord("sys_user_grmember");
            user.addQuery("group", "IN", grp);
            user.query();
            var userName = [];
            while (user.next()) {
		if(userName.indexOf(user.user.toString())==-1)
                userName.push(user.user.toString());				
            }
			
            return "sys_idIN"+userName.join(",");
        }
    },

    type: 'autopopulateusergroup'
});

Hope this helps.

 

Ankur Bawiskar
Tera Patron
Tera Patron

@klbhargav3 

while pushing value into array either use toString() or use getValue()

userName.push(user.getValue('user'));

OR

userName.push(user.user.toString());

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

@klbhargav3 

Hope you are doing good.

Did my reply answer your question?

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

Chavan AP
Tera Guru
Corrected Script Include:

var autopopulateusergroup = Class.create();
autopopulateusergroup.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getUser: function() {
        var gr = new GlideRecord("sys_user_grmember");
        gr.addQuery("user", gs.getUserID());
        gr.query();
        
        var grp = [];
        while (gr.next()) {
            grp.push(gr.group.toString());
        }
        
        if (grp.length > 0) {
            var user = new GlideRecord("sys_user_grmember");
            user.addQuery("group", "IN", grp);
            user.query();
            
            var userName = [];
            while (user.next()) {
                // Push the sys_id as string, not the GlideRecord object
                userName.push(user.user.toString());
            }
            
            // Return proper format for reference qualifier
            if (userName.length > 0) {
                return userName.join(",");
            }
        }
        
        // Return empty result if no users found
        return "";
    },
    
    type: 'autopopulateusergroup'
});


Reference Qualifier:
javascript:new autopopulateusergroup().getUser()


Fixed the return format: Changed from "sys_idIN"+userName.join(",") to just userName.join(",") 

Added .toString() to user.user.toString() to ensure you're getting the sys_id string value, not the GlideRecord object


Glad I could help! If this solved your issue, please mark it as Helpful and Accept as Solution so others can benefit too.*****Chavan A.P. | Technical Architect | Certified Professional*****