How to get multiple values from user table and populate through client script?

Guru Mahendra
Kilo Contributor

Hello Experts,

Please help me correcting the below code.

Script include:

var UserDetails = Class.create();
UserDetails.prototype = {
initialize: function() {
},
getDetails: function(){
var result;
var user = this.getParameter('sysparm_user');
var grUser = new GlideRecord('sys_user');
grUser.addQuery('sys_id',user);
grUser.query();
if(grUser.next()){
result = {
"email": grUser.getValue('email')
};
}
var str = JSON.stringify(result);
return str;
},

type: 'UserDetails'
};

 

OnChange Client Script:

 

var user = g_form.getValue('user');
var ga = new GlideAjax('UserDetails');
ga.addParam('sysparm_user',user);
ga.addParam('sysparm_name','getDetails');
ga.getXML(callBack);
function callBack(response){

var result = response.responseXML.documentElement.getAttribute(response);
var obj = JSON.parse(result);
alert(obj.email);
}

5 REPLIES 5

suvro
Mega Sage
Mega Sage

Hi Guru,

Please follow this

https://community.servicenow.com/community?id=community_article&sys_id=c77ff0dddbbb8190847d5ac2ca96198a

Please mark my answer as correct if it resolved your issue and bookmark the article I shared for future reference.

Chetan Mahajan
Kilo Sage
Kilo Sage

Hi Guru,

                You can refer below onload Client Script and script include to populate user details, you can use same code in onChange.

Client Script :

function onLoad() {
   var glideAjax = new GlideAjax('MyFavoritesAjax'); // client callbale script include name
    glideAjax.addParam('sysparm_name', 'get_userInfo'); // function name
    glideAjax.addParam('sysparm_user', g_user.userID); // parameter to pass on script include
    glideAjax.getXML(getResults);

    function getResults(serverResponse) {
        var favorites = serverResponse.responseXML.getElementsByTagName("favorite");


        for (var i = 0; i < favorites.length; i++) {
            var name = favorites[i].getAttribute("name");
            var value = favorites[i].getAttribute("value");

           // alert("value" + value);
           
			if (name == 'email') {  // setting email value 
                g_form.setValue('email', value);
            }

            if (name == 'manager') { // setting manager value
                g_form.setValue('aproving_manager', value);

            }
			if (name == 'department') { // setting department value
                g_form.setValue('department', value);

            }
        }
    }

   
}

Script Include : (Client callable true)

var MyFavoritesAjax = Class.create();
MyFavoritesAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
   
    // fetch Logged in users information 
    get_userInfo: function() {

        var id = this.getParameter('sysparm_user'); // to get parameter from client side

        var userGR = new GlideRecord('sys_user');
        userGR.addQuery('sys_id', id);
        userGR.query();
        if (userGR.next()) {
            this._addFavorite("email", userGR.email.getDisplayValue());
            this._addFavorite("department", userGR.department.getDisplayValue());
            this._addFavorite("manager", userGR.manager.getDisplayValue());
        }
    },

    _addFavorite: function(name, value) {

        var favs = this.newItem("favorite");
        favs.setAttribute("name", name);
        favs.setAttribute("value", value);
    },

    type: "MyFavoritesAjax"

});

Result :

find_real_file.png

Kindly mark correct and helpful if applicable

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

good article for this

Get User Details based on the Logged in user/ User selected in Client Script

here is an example

var UserDetails = Class.create();
UserDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {

	getDetails: function(){
		var result;
		var user = this.getParameter('sysparm_user');
		var grUser = new GlideRecord('sys_user');
		grUser.addQuery('sys_id',user);
		grUser.query();
		if(grUser.next()){
			result = {
				"email": grUser.getValue('email'),
				"phone": grUser.getValue('mobile_phone')
			};
		}

		var str = JSON.stringify(result);
		return str;
	},

	type: 'UserDetails'
});

Client script:

function onChange(control, oldValue, newValue, isLoading) {
	if (isLoading || newValue == '') {
		return;
	}

	var ga = new GlideAjax('UserDetails');
	ga.addParam('sysparm_name', "getDetails");
	ga.addParam('sysparm_user', newValue);
	ga.getXMLAnswer(function(answer){
		if(answer != ''){
			var parser = JSON.parse(answer);
			var email = parser.email;
			var phone = parser.mobile_phone;
		}
	});
	//Type appropriate comment here, and begin script below

}

Regards
Ankur

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