Write Scheduled Job: Approval Remainder
var arrUtil = new ArrayUtil(); //set up array to find all pending approvals for users
var answer = [];
var UserName = [];
var app = new GlideRecord('sysapproval_approver'); //set up variable to retrieve approvals that are pending
app.addEncodedQuery("stateINrequested^sys_created_onRELATIVELT@hour@ago@24");
app.orderBy('approver');
app.query();
while (app.next()) { // step through the approvals one by one
if (arrUtil.indexOf(answer, app.approver.sys_id) == -1) { //if the approver is not currently in our list, add them (next line adds them)
answer.push(app.approver.sys_id);
UserName.push(app.approver.getDisplayValue());
}
}
for (var i = 0; i < answer.length; i++) { //have array that lists each user who has open change approvals We'll step through each
gs.eventQueue('approval.remainder', app, answer[i], UserName[i]); //and fire off the event for each user, passing their sys_id as parm1
}
Create Event:
Go to registry in left navigation bar: approval.remainder
Create Notification:
When to fire when event trigger: give event name : approval.remainder
Notification Email Script:
var html = '';
html += "<table border='1px solid #ce2127' style='font-size: 10pt;'><tr><th style='text-align:center'><b>Request Date</b></th><th style='text-align:center'><b>Requestor</b></th><th><b>Short Description</b></th><th><b>Request ID</b></th><th><b>Approve/Deny</b></th></tr>";
var app = new GlideRecord('sysapproval_approver'); //create a query to retrieve open approvals
app.addEncodedQuery("stateINrequested^sys_created_onRELATIVELT@hour@ago@24");
app.addQuery('approver', event.parm1); //only find approvals for the current approver
app.query();
while (app.next()) {
var requestorName="";
var getApprovalName=app.sysapproval.getDisplayValue();
if(getApprovalName.indexOf("RITM")!=-1)
{
requestorName=app.sysapproval.requested_for.getDisplayValue();
}
else
{
requestorName=app.sysapproval.requested_by.getDisplayValue();
}
var link = gs.getProperty('instance_name');
var generateLink = 'https://' + link + '.service-now.com/sp?id=approval&table=sysapproval_approver&sys_id=' + app.sys_id;
var anchor = "<a href=" + generateLink + ">Approve / Deny</a>";
html +="<tr><td><b>" + app.sysapproval.sys_created_on.getDisplayValue() + "</b></td><td><b>" + requestorName + "</b></td><td>" + app.sysapproval.short_description + "</td><td><b>" + app.sysapproval.getDisplayValue() + "</b></td><td>" + anchor + "</td></tr>";
}
html += '</table>';
template.print(html);
Schedule job to send notification Remainder after 24 hours of ticket creation ServiceNow
Working Code Edited question July 13, 2023
Sorry, you do not have permission to read comments.