- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-17-2024 08:11 AM
Hello,
I'm learning script include on how to return a result to the caller. Please provide guidance. Thank you
I would like to display an alert after a record has been created.
UI Action Script:
function requestApproval() {
var approverSysId = g_form.getValue('assigned_to');
var recordSysId = g_form.getUniqueValue();
var ga = new GlideAjax('NewApprovalRecord');
ga.addParam('sysparm_name', 'createApprover');
ga.addParam('sysparm_approver', approverSysId);
ga.addParam('sysparm_sys_id', recordSysId);
ga.getXMLAnswer(callBackFunction);
}
function callBackFunction(result) {
if (result == 'Yes') {
alert(result);
}
}
Script Include:
var NewApprovalRecord = Class.create();
NewApprovalRecord.prototype = Object.extendsObject(AbstractAjaxProcessor, {
createApprover: function() {
var approverID = this.getParameter('sysparm_approver');
var recordID = this.getParameter('sysparm_sys_id');
var newApproval = new GlideRecord('sysapproval_approver');
newApproval.initialize();
newApproval.setValue('state', 'requested');
newApproval.setValue('approver', approverID);
newApproval.setValue('sysapproval', recordID);
newApproval.insert();
},
type: 'NewApprovalRecord'
});
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-17-2024 08:28 AM
Hey!
Welcome to SN.
To return a response from a client-callable script include you can do the following (which is applicable when using getXMLAnswer)
createApprover: function() {
var approverID = this.getParameter('sysparm_approver');
var recordID = this.getParameter('sysparm_sys_id');
var newApproval = new GlideRecord('sysapproval_approver');
newApproval.initialize();
newApproval.setValue('state', 'requested');
newApproval.setValue('approver', approverID);
newApproval.setValue('sysapproval', recordID);
newApproval.insert();
return newApproval.getUniqueValue();
}
The javasciprt return operator defines what the function i returning, and the newApproval.getUniqueValue() returns a string value of the sys_id. You want to make sure you're returning a string(able) value, not an object.
So the following wouldn't work, as newApproval isa GlideObject
createApprover: function() {
var approverID = this.getParameter('sysparm_approver');
var recordID = this.getParameter('sysparm_sys_id');
var newApproval = new GlideRecord('sysapproval_approver');
newApproval.initialize();
newApproval.setValue('state', 'requested');
newApproval.setValue('approver', approverID);
newApproval.setValue('sysapproval', recordID);
newApproval.insert();
return newApproval
}
But this would
createApprover: function() {
var approverID = this.getParameter('sysparm_approver');
var recordID = this.getParameter('sysparm_sys_id');
var newApproval = new GlideRecord('sysapproval_approver');
newApproval.initialize();
newApproval.setValue('state', 'requested');
newApproval.setValue('approver', approverID);
newApproval.setValue('sysapproval', recordID);
newApproval.insert();
return true
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-17-2024 08:29 AM
Hi @Meera_P ,
try this
var NewApprovalRecord = Class.create();
NewApprovalRecord.prototype = Object.extendsObject(AbstractAjaxProcessor, {
createApprover: function() {
var approverID = this.getParameter('sysparm_approver');
var recordID = this.getParameter('sysparm_sys_id');
var newApproval = new GlideRecord('sysapproval_approver');
newApproval.initialize();
newApproval.setValue('state', 'requested');
newApproval.setValue('approver', approverID);
newApproval.setValue('sysapproval', recordID);
return newApproval.insert(); //this would return sys_id of the approval record
},
type: 'NewApprovalRecord'
});
Thank you,
Hemanth
Certified Technical Architect (CTA), ServiceNow MVP 2024, 2025

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-17-2024 08:28 AM
Hey!
Welcome to SN.
To return a response from a client-callable script include you can do the following (which is applicable when using getXMLAnswer)
createApprover: function() {
var approverID = this.getParameter('sysparm_approver');
var recordID = this.getParameter('sysparm_sys_id');
var newApproval = new GlideRecord('sysapproval_approver');
newApproval.initialize();
newApproval.setValue('state', 'requested');
newApproval.setValue('approver', approverID);
newApproval.setValue('sysapproval', recordID);
newApproval.insert();
return newApproval.getUniqueValue();
}
The javasciprt return operator defines what the function i returning, and the newApproval.getUniqueValue() returns a string value of the sys_id. You want to make sure you're returning a string(able) value, not an object.
So the following wouldn't work, as newApproval isa GlideObject
createApprover: function() {
var approverID = this.getParameter('sysparm_approver');
var recordID = this.getParameter('sysparm_sys_id');
var newApproval = new GlideRecord('sysapproval_approver');
newApproval.initialize();
newApproval.setValue('state', 'requested');
newApproval.setValue('approver', approverID);
newApproval.setValue('sysapproval', recordID);
newApproval.insert();
return newApproval
}
But this would
createApprover: function() {
var approverID = this.getParameter('sysparm_approver');
var recordID = this.getParameter('sysparm_sys_id');
var newApproval = new GlideRecord('sysapproval_approver');
newApproval.initialize();
newApproval.setValue('state', 'requested');
newApproval.setValue('approver', approverID);
newApproval.setValue('sysapproval', recordID);
newApproval.insert();
return true
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-17-2024 11:03 AM
Your explanation was extremely helpful. Thank you.
I also would like includes "Item number" and "Opened By in the return message.
var approverID = this.getParameter('sysparm_approver');
var recordID = this.getParameter('sysparm_sys_id');
var newApproval = new GlideRecord('sysapproval_approver');
newApproval.initialize();
newApproval.setValue('state', 'requested');
newApproval.setValue('approver', approverID);
newApproval.setValue('sysapproval', recordID);
newApproval.insert();
//var values = newApproval.getUniqueValue();
var approverName = newApproval.approver.name;
var number = newApproval.approvalfor.number; /// Don't work
var openedBy = ??????
var values = "Requested Number: "+number+ ' Approver Name '+ approverName + ' Opened By: 'openedBy;
return values;
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-17-2024 11:59 AM
I was able to obtains the request number and opened by using the following code:

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-18-2024 01:39 AM
Rather than trying to return it in a string like that, especially when you have multiple values, you can use JSON notation
var approverID = this.getParameter('sysparm_approver');
var recordID = this.getParameter('sysparm_sys_id');
var newApproval = new GlideRecord('sysapproval_approver');
newApproval.initialize();
newApproval.setValue('state', 'requested');
newApproval.setValue('approver', approverID);
newApproval.setValue('sysapproval', recordID);
newApproval.insert();
//var values = newApproval.getUniqueValue();
var approverName = newApproval.approver.name;
var number = newApproval.approvalfor.number; /// Don't work
var openedBy = ??????
var values = "Requested Number: "+number+ ' Approver Name '+ approverName + ' Opened By: 'openedBy;
return JSON.stringify({
'approverName' : newApproval.getDisplayValue('approver'),
'approverSysId' : newApproval.getValue('approver'),
'approvingRecordDisplayValue' : newApproval.getDisplayValue('document_id')
})