Call script include from a schedule job and then trigger notification

Nikki18
Giga Contributor

Hi All,

I have a requirement, where i have created a script include and i need to call this script include in a schedule job which runs periodically and when script include returns true i need to trigger notification i.e call a event in schedule job.

Below is the Script include

 Script include name - CriteriaforUser

Test1 : function(usersysid){

var Date1 ='';
var encqry='some query';
var grUserRec = new GlideRecord('sys_user');
grUserRec.addQuery('sys_id',usersysid);
grUserRec.addEncodedQuery(encqry);
grUserRec.query();
if(grUserRec.next()){
Date1 = grUserRec.date;


var gdt2 = new GlideDateTime();
var gdt = new GlideDateTime(Date1);
var strtdate = gdt.getDate();
var dgt = new GlideDateTime();
var nowdt = dgt.getDate();
var duration = gs.dateDiff(nowdt, strtdate, true);
if(duration>0)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}

},

 

I need to call this script in a schedule job and need to trigger the event once the script include returns true.

Can someone help me with the schedule job as i am not understaing the way to call it.

 

Thanks in advance.

14 REPLIES 14

Sagar Pagar
Tera Patron

Hi @Nikki18,

Call script include in Scheduled job scripts and based on result fire the events using gs.evenQueue() method.

 

var result = new CriteriaforUserI().Test1(usersysidParameter);

 

if(result == true){

gs.eventQueue("event.name", current/grObject, param1, param2);

}

 

 

Thanks,
Sagar Pagar

The world works with ServiceNow

Hi Sagar

 

var result = new CriteriaforUserI().Test1(usersysidParameter);----> what needs to be passed here from script include

 

if(result == true){

gs.eventQueue("event.name", current/grObject, param1, param2);

}

 

What needs to be passed from the script include?

Hi @Sagar Pagar ,

Below are the code for script include and schedule job.

Is this correct?

schedule Job

var getUser = new GlideRecord("sys_user");
getUser.addQuery('active', true);
getUser.query();
while(getUser.next()){
if(new CriteriaforUser().Test1(getUser.sys_id) == true){
gs.eventQueue();
}
}

 

and this is the script include

 Script include name - CriteriaforUser

Test1 : function(usersysid){

var Date1 ='';
var encqry='some query';
var grUserRec = new GlideRecord('sys_user');
grUserRec.addQuery('sys_id',usersysid);
grUserRec.addEncodedQuery(encqry);
grUserRec.query();
if(grUserRec.next()){
Date1 = grUserRec.date;


var gdt2 = new GlideDateTime();
var gdt = new GlideDateTime(Date1);
var strtdate = gdt.getDate();
var dgt = new GlideDateTime();
var nowdt = dgt.getDate();
var duration = gs.dateDiff(nowdt, strtdate, true);
if(duration>0)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}

},

 

Gunjan Kiratkar
Kilo Patron
Kilo Patron

Hi @Nikki18 ,

You can use below code to call your script include in scheduled job :-

 

var obj = new CriteriaforUser().Test1();

 

To triggered event you can use as below :-

 

gs.eventQueue('EventName');

 

 


Please Mark My Response as Correct/Helpful based on Impact
Regards,
Gunjan Kiratkar
2X ServiceNow MVP
Community Rising Star 2022
Youtube : ServiceNow Guy