i created this Scheduled Script Execution but it seem like its not triggering
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
(function () {
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
so what's not working and what debugging did you do?
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
I have couple test records but so far no events have trigger which they should already, i ran a couple of background script to see timestamps. Scripting is not my biggest thing.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
try this and see, ensure you set Recipient in Who will receive tab in notification
(function() {
var RITM_STATE_CLOSED_INCOMPLETE = 4; // sc_req_item.state
var RITM_STAGE_VALUE = 'approval_not_received'; // sc_req_item.stage
var REQ_REQUEST_STATE_VALUE = 'closed_incomplete'; // sc_request.request_state
var REQ_STAGE_VALUE = 'closed_incomplete'; // sc_request.stage
// Returns lower and upper bounds for hour window X hours ago
function makeBounds(hoursAgo) {
var now = new GlideDateTime();
var upper = new GlideDateTime(now.getValue());
upper.addSeconds(-hoursAgo * 60 * 60); // Subtract N hours (in seconds)
var lower = new GlideDateTime(upper.getValue());
lower.addSeconds(-60 * 60); // Subtract 1 hour (in seconds)
return {
lower: lower,
upper: upper
};
}
// Send approval reminders to approvers for RITMs at a given age
function queueRitmReminders(hoursAgo, eventName) {
var w = makeBounds(hoursAgo);
var gr = new GlideRecord('sysapproval_approver');
gr.addQuery('state', 'requested');
gr.addQuery('sysapproval.sys_class_name', 'sc_req_item');
gr.addQuery('sys_created_on', '>=', w.lower);
gr.addQuery('sys_created_on', '<', w.upper);
gr.query();
while (gr.next()) {
gs.eventQueue(eventName, gr, '', '');
}
}
// At 96 hours, close RITM and REQ as incomplete, cancel approvals, fire cancellation event
function cancelRitmsAt96Hours() {
var w = makeBounds(96);
var appr = new GlideRecord('sysapproval_approver');
appr.addQuery('state', 'requested');
appr.addQuery('sysapproval.sys_class_name', 'sc_req_item');
appr.addQuery('sys_created_on', '>=', w.lower);
appr.addQuery('sys_created_on', '<', w.upper);
appr.query();
var processed = {};
while (appr.next()) {
var ritmId = String(appr.getValue('sysapproval') || '');
if (!ritmId || processed[ritmId]) continue;
processed[ritmId] = true;
var ritm = new GlideRecord('sc_req_item');
if (!ritm.get(ritmId)) continue;
if (String(ritm.getValue('state')) === String(RITM_STATE_CLOSED_INCOMPLETE)) continue;
if (ritm.isValidField('stage')) ritm.setValue('stage', RITM_STAGE_VALUE);
ritm.setValue('state', RITM_STATE_CLOSED_INCOMPLETE);
ritm.update();
var ap2 = new GlideRecord('sysapproval_approver');
ap2.addQuery('sysapproval', ritm.getUniqueValue());
ap2.addQuery('state', 'requested');
ap2.query();
while (ap2.next()) {
ap2.setValue('state', 'cancelled');
ap2.update();
}
if (ritm.request) {
var req = new GlideRecord('sc_request');
if (req.get(ritm.request.toString())) {
if (req.isValidField('request_state')) req.setValue('request_state', REQ_REQUEST_STATE_VALUE);
if (req.isValidField('stage')) req.setValue('stage', REQ_STAGE_VALUE);
req.update();
}
}
gs.eventQueue('ritm.approval.cancelled.96h', ritm, '', '');
}
}
// Reminders
queueRitmReminders(24, 'ritm.approval.reminder.24h');
queueRitmReminders(48, 'ritm.approval.reminder.48h');
queueRitmReminders(72, 'ritm.approval.reminder.72h');
// Auto cancel at 96 hours
cancelRitmsAt96Hours();
})();
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
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.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader