Populate EMail and phone of reference - reference via On change
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-23-2023 07:03 PM
Can some one help me with the script
As of now we have a reference field of sys_user_grmember where we are only populating one group users
up on selecting the user we need to populate users email and phone , below is the script which is showing undefined, can some one help me where am I doing wrong?
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var user = g_form.getReference("project_commissioning_engineer", populateManager);
}
function populateManager(user) {
g_form.setValue("project_commissioning_engineer_email", user.email);
g_form.setValue("project_commissioning_engineer_phone", user.phone);
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-23-2023 08:10 PM
Hi @RudhraKAM ,
getReferences get the sys_user_grmember as the callback function parameter. So try this.
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var user_mem = g_form.getReference("project_commissioning_engineer", populateManager);
}
function populateManager(user_mem) {
g_form.setValue("project_commissioning_engineer_email", user_mem.user.email);
g_form.setValue("project_commissioning_engineer_phone", user_mem.user.phone);
}
Anvesh
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-24-2023 07:26 AM
Hello @AnveshKumar M its still showing as undefined
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-24-2023 08:23 PM - edited 07-24-2023 08:25 PM
Hi @RudhraKAM ,
It seems dot walking is not allowed in client side GlideRecord.
It's better to create a client Callable Script Include and call that using the GlideAjax to get the email and mobile. Follow this,
Client Callable Script Include:
var GetUserInfo = Class.create();
GetUserInfo.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
userData: function() {
var user = this.getParameter("sysparm_user");
var grUser = new GlideRecord('sys_user');
grUser.get("sys_id", user);
var result = {
"email": grUser.getValue('email'),
"phone": grUser.getValue('phone')
};
return JSON.stringify(result);
},
type: 'GetUserInfo'
});
On Change Client Script:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var user_mem = g_form.getReference("project_commissioning_engineer", populateManager);
}
function populateManager(user_mem) {
var ga = new GlideAjax('GetUserInfo');
ga.addParam('sysparm_name','userData');
ga.addParam('sysparm_user',user_mem.user);
ga.getXMLAnswer(userDataParse);
}
function userDataParse(answer){
if(answer){
var data = JSON.parse(answer);
g_form.setValue("project_commissioning_engineer_email", data.email);
g_form.setValue("project_commissioning_engineer_phone", data.phone);
}
}
Anvesh

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-24-2023 08:36 PM
Hi may i know which version of servicenow your using? If it is before Utah you can use catalog setter variables to autopopulate both variables no script needed.
Utah Version:
Before Utah Version use Catalog Setter variables
Harish