Schedule report on the 1st day on the month excluding weekends
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-16-2022 01:39 AM
How to schedule a report for every 1st of month but if it is weekend then it should trigger next day.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-16-2022 03:44 AM
Hi,
you want to invoke scheduled report from scheduled job?
then do this
myJob();
function myJob(){
var gdt = new GlideDateTime();
var dayOfWeek = gdt.getDayOfWeekLocalTime();
var trigger = new GlideRecord("sys_trigger");
if(dayOfWeek == 6){
gdt.addDaysUTC(2);
trigger.name = "Job running on Monday due to saturday";
trigger.next_action = gdt;
trigger.job_id.setDisplayValue('RunScriptJob');
trigger.script = getTriggerScript();
trigger.state = 0;
trigger.trigger_type = 0;
trigger.insert();
}
if(dayOfWeek == 7){
var nowTime = new GlideDateTime();
nowTime.addDaysUTC(1);
trigger.name = "Job running on Monday due to sunday";
trigger.next_action = nowTime;
trigger.job_id.setDisplayValue('RunScriptJob');
trigger.script = getTriggerScript();
trigger.state = 0;
trigger.trigger_type = 0;
trigger.insert();
}
}
function getTriggerScript(userSysID) {
var ret = "var rec = new GlideRecord('sysauto_report'); rec.get('name', 'MyReport'); SncTriggerSynchronizer.executeNow(rec);"; // give your script here
return ret;
}
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-16-2022 04:09 AM
Hi Ankur,
I just wanted to schedule my report to trigger on every 1st day of month, excluding Sat/Sun.
I will try your script.. But i'm getting this line-
trigger.name = "Job running on Monday due to saturday";
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-16-2022 04:11 AM
Hi,
that is just the name for the trigger; nothing special on it
trigger.name = "Job running on Monday due to saturday";
keep scheduled report as inactive as we will be triggering it from scheduled job
update script as this
myJob();
function myJob(){
var gdt = new GlideDateTime();
var dayOfWeek = gdt.getDayOfWeekLocalTime();
var trigger = new GlideRecord("sys_trigger");
if(dayOfWeek == 6){
gdt.addDaysUTC(2);
trigger.name = "Job running on Monday due to saturday";
trigger.next_action = gdt;
trigger.job_id.setDisplayValue('RunScriptJob');
trigger.script = getTriggerScript();
trigger.state = 0;
trigger.trigger_type = 0;
trigger.insert();
}
else if(dayOfWeek == 7){
var nowTime = new GlideDateTime();
nowTime.addDaysUTC(1);
trigger.name = "Job running on Monday due to sunday";
trigger.next_action = nowTime;
trigger.job_id.setDisplayValue('RunScriptJob');
trigger.script = getTriggerScript();
trigger.state = 0;
trigger.trigger_type = 0;
trigger.insert();
}
else{
// it's not weekend so run the report
var rec = new GlideRecord('sysauto_report');
rec.get('name', 'MyReport');
SncTriggerSynchronizer.executeNow(rec);
}
}
function getTriggerScript(userSysID) {
var ret = "var rec = new GlideRecord('sysauto_report'); rec.get('name', 'MyReport'); SncTriggerSynchronizer.executeNow(rec);"; // give your script here
return ret;
}
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-16-2022 04:12 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-16-2022 05:31 AM
Hi,
you can skip the scheduled report using conditions and ensure it runs only on 1st of the month and not on weekend also
but your next part is to make it run on monday of the coming weekend
for that you need to use my solution/approach
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader