I am new to servicenow want to know how to schedule jobs using glide script . Please explain steps with detailed

Shilpi Sharma2
Tera Contributor

I am new to servicenow want to know how to schedule jobs using glide script . Please explain steps with detailed.

My requirement is that i need to trigger a mail before the expiry date to end user. before 15/10/05 days.

1 ACCEPTED SOLUTION

Hi Shilpi,

PFB the steps:

1) Register and event through Event Registry.

find_real_file.png

2) Configure Notification as below

find_real_file.png

find_real_file.png

3) Create a Scheduled job from System definition->Scheduled Job.

4) Select Automatically run a script of your choosing.

5) Create a job with run field as daily and select a particular time on which this job will trigger.(I have selected on demand for test purpose).

find_real_file.png

6) Write below script under Run this script.

var gr = new GlideRecord('x_197397_test_appl_test123');// give your table name
gr.query();
while (gr.next())
    {
//gs.info("expiry date :"+exp);
var dt = new GlideDateTime().getDate();
var dt1 = new GlideDateTime(exp).getDate();
var diff = GlideDateTime.subtract(dt,dt1);
var a = diff.getDisplayValue();
 var arr=a.split(" ");
var day =arr[0];
   
 if(day == 15)
        {
            gs.eventQueue('x_197397_test_appl.Reminder for expiry',gr,gr.caller,gs.getUserID());// give your event name in first parameter and pass the parameter 3rd and 4th as per your requirement
        }
    else if(day == 10)
        {
            gs.eventQueue('x_197397_test_appl.Reminder for expiry',gr,gr.caller,gs.getUserID());
        }
    else if(day == 5)
        {
                gs.eventQueue('x_197397_test_appl.Reminder for expiry',gr,gr.caller,gs.getUserID());
        }
    }

 

Hope this helps.

 

Regards,

Monika

View solution in original post

14 REPLIES 14

Hi Shilpi,

PFB the script:

var gr = new GlideRecord('incident');
gr.query();
while (gr.next())
    {
var exp = gr.u_expiry_date; // This is missing. Change the name of the  field as per your application.
//gs.info("expiry date :"+exp);
var dt = new GlideDateTime().getDate();
var dt1 = new GlideDateTime(exp).getDate();
    gs.info(dt);
    gs.info(dt1);
    var diff = GlideDateTime.subtract(dt,dt1);
    var a = diff.getDisplayValue();
    //gs.addInfoMessage(a);
    var arr=a.split(" ");
    var day =arr[0];
    //gs.addInfoMessage("is it"+s);
    if(day == 15)
        {
            gs.eventQueue('x_197397_test_appl.Reminder for expiry',gr,gr.caller,gs.getUserID());//Change caller id field name as per your application ootb the name is caller_id.
        }
    else if(day == 10)
        {
            gs.eventQueue('x_197397_test_appl.Reminder for expiry',gr,gr.caller,gs.getUserID());//Change caller id field name as per your application ootb the name is caller_id.
        }
    else if(day == 5)
        {
                gs.eventQueue('x_197397_test_appl.Reminder for expiry',gr,gr.caller,gs.getUserID());//Change caller id field name as per your application ootb the name is caller_id.
        }
    }

=========

From Notification Configuration remove the caller field that you have mentioned in User and Group fields.

Also for test click on execute now for schedule job and difference between the expiry date and created date should be 15, 10 or 5 Days.

So mention the expiry date accordingly for test purpose.

Let me know how it goes.

 

Regards,

Monika

 

 

hi Monika,

 

Please find below my Script

var gr = new GlideRecord('incident');// give your table name
gr.query();
while (gr.next())
{
var exp = gr.due_date;
gs.print("expiry date :"+exp);
var dt = new GlideDateTime().getDate();
var dt1 = new GlideDateTime(exp).getDate();
var diff = GlideDateTime.subtract(dt,dt1);
var a = diff.getDisplayValue();
gs.addInfoMessage(a);
var arr=a.split(" ");
var day =arr[0];
gs.addInfoMessage(day);

if(day >= 1)
{
gs.eventQueue('Reminder for expiry date',gr,gr.caller_id,gs.getUserID());
// give your event name in first parameter and pass the parameter 3rd and 4th as per your requirement
}
else if(day == 15)
{
gs.eventQueue('Reminder for expiry date',gr,gr.caller_id,gs.getUserID());
// give your event name in first parameter and pass the parameter 3rd and 4th as per your requirement
}
else if(day == 10)
{
gs.eventQueue('Reminder for expiry date',gr,gr.caller_id,gs.getUserID());
}
else if(day == 5)
{
gs.eventQueue('Reminder for expiry date',gr,gr.caller_id,gs.getUserID());
}
}

 

Please mention how to debug this script and from where  can see gs.logfile.

Hi Shilpi,

You can check the logs through System logs->all.

Also click on execute now through schedule job and check for notification in outbox.

 

Regards,

Monika

Hi Monika,

 

Thank you so much for your help . Now it is working fine.

Do you declare the variable for exp? Didn't see any value assign to the variable.