Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Mahesh Kumar3
Giga Guru

We often come across scenarios where we have to put condition in UI Action which cannot be written with a simple condition. e.g. current.active == true or current.canRead() etc, etc.

People often get confused to use advance condition in UI action. Yes, the very common mistake we do is we put javaScript: in UI action condition. Like advanced reference qualifier or filter condions etc, we need not put javaScript: when we are calling a script include from UI action. Moreover, the script include should return true/false as well.

Advanced condtion in a UI action will look like the following snapshot:

find_real_file.png

For example: we are asked to show a UI action when a incident is closed and it should have been closed in last 30 days.

Below is the script include and if you notice the above condition there is no javaScript: there:

getCondition: function(currentObj) {

        // If state is not closed, then directly return false

        if (currentObj.state != 3) {
            return false;
        }

        // otherwise, compare closed date is within last 30 days

        var nowDateTime = new GlideDateTime();

        var dur = new GlideDateTime();

        nowDateTime.setDisplayValue(gs.nowDateTime());

        var closedDateTime = currentObj.closed_at.getDisplayValue();

        dur = gs.dateDiff(closedDateTime, nowDateTime);

        var dateDifference = new GlideDuration(dur);

        var d = dateDifference.getDayPart();

        if (d <= 30) {
            return true;
        }
        return false;
},
Version history
Last update:
‎03-10-2021 08:36 PM
Updated by: