Hi Developers,

Welcome to another article in the series and the first on the scripting. Today we will talk about how to code smarter with Script Includes.

Script Includes defines a function or class to be reusable server-side script logic that execute only when explicitly called by other scripts.

Let us talk about Script Includes later someday (You still can read about them at Docs or Here). Today we will be creating a Utilities Script Include to help you code smart.

I was inspired to find this capability of script include after reading @KalaiarasanPushpanathan’s blog post ‘Unlearn Series – Common Library Functions – Part1

You might be thinking how can we code smart using Script Includes?

First of all, using Script Includes is itself a way of coding smarter. Wondering why?

  • Script Includes are only loaded on request
  • Script Includes are reusable server-side script logic

We will be using the same capability of it for our server side scripts to make it quick and smart. How?

Let me give you some examples,

If you have a requirement, let’s say, to update the Incident state based on some query. The shortest GlideRecord query will look somewhat like this :


var gr = new GlideRecord("incident");

gr.addEncodedQuery(“active=true^caller_id=77ad8176731313005754660c4cf6a7de”);

gr.setValue(‘state’,2);

gr.updateMultiple();

Code Smart with Script Include

And if you have to update another set of records to different values for different query condition on different table, you have to write it again!

But if we use the capability of re-usability of Script Includes we don’t need to re-write all of the code. And In fact, your code will be reduced to a single line :


MySI.updateList('incident','active=true^caller_id=
77ad8176731313005754660c4cf6a7de','state',2);

Code Smart with Script Include

You can change the parameters (table, query, field, value) to different values to use it as per your requirement.

How to achieve it? I will demonstrate you how to create a smart Script Includes with some simple examples, Feel free to create your own with your own piece of code, and don’t forget to share your new findings here on ServiceNow Community.

Step 1 : Navigate to System Definitions > Script Includes and click ‘New’

Code Smart with Script Include

(Tip : Observe the way we filter the applications in navigator, the last two letters of first word and first two letters of second word. It is a shortcut to filter applications I learned from my lead @MouliPraneeth in one of my projects. E.g. ‘ssru‘ for Business Rules)

Step 2: Give it a unique name

Code Smart with Script Include

Step 3 : Change the ‘Accessible from’ to ‘All application scopes’ so that it can be accessed from any application scope.

Code Smart with Script Include

Step 4 : Delete the ‘initialize’ function defined in line 3 & 4.

Code Smart with Script Include

Step 5 : Paste the following piece of code after Line 1 and click ‘Submit’.


//My Smart SI - Start

SmartSI.getRecCount = function(table, query) {

var gr = new GlideRecord(table);

gr.addEncodedQuery(query);

gr.query();

returngr.getRowCount();

};

SmartSI.getRecords = function(table, query) {

var gr = new GlideRecord(table);

gr.addEncodedQuery(query);

gr.query();

return gr;

};

SmartSI.getRecList = function(table, query) {

varrecList = [];

var gr = new GlideRecord(table);

gr.addEncodedQuery(query);

gr.query();

while (gr.next()) {

recList.push(gr.getUniqueValue());

}

returnrecList.toString();

};

SmartSI.updateList = function(table, query, field, value) {

var gr = new GlideRecord(table);

gr.addEncodedQuery(query);

gr.setValue(field, value);

gr.updateMultiple();

return ”;

};

SmartSI.deleteList = function(table, query) {

var gr = new GlideRecord(table);

gr.addEncodedQuery(query);

gr.deleteMultiple();

return ”;

};

//My Smart SI – End

Code Smart with Script Include

Hurray, You are now ready to test your Script Include. Check whether executing following script in Scripts – background deletes all inactive problem records? :

SmartSI.deleteList('problem', 'active=false');

Now you are all set to modify your working Script Include with your own reusable functions and code smarter.

Thank You.

Emergys Blog

Recent Articles

  • BMC Connect Banner

    BMC Connect 2024

    BMC Connect 2024

    Emergys is a Silver Sponsor at [...]

    Emergys is a Silver Sponsor at BMC Connect 2024 Oct 14-16, [...]

  • ITSM for a Global BFSI

    Transforming ITSM for a Global BFSI Leader with BMC Helix

    Transforming ITSM for a Global BFSI Leader with BMC Helix

    In the dynamic Banking and Financial Services sector, efficient [...]

    In the dynamic Banking and Financial Services sector, efficient IT operations are vital for superior [...]

  • Migrating from Remedyforce to BMC Helix

    Enhance Your IT Service Management: Migrating from Remedyforce to BMC Helix

    Enhance Your IT Service Management: Migrating from Remedyforce to BMC Helix

    In today’s rapidly evolving business landscape, organizations must constantly seek [...]

    In today’s rapidly evolving business landscape, organizations must constantly seek ways to optimize their IT service [...]