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.

Dynamic filter using script include as reference

tiagomacul
Giga Sage

I'm trying to create a Dynamic filter using script include or also Business Rules, how ever, I've been trying and when i tried to recognize how to do:

  1. Script include / Application: Global / Accessible from: All application scopes
  2. Dynamic Filter / script: javascript: new <includename>.<function name>(); / Reference Script: Script Include: <includename>

Script Include

find_real_file.png

var appLogin = Class.create();

appLogin.prototype = Object.extendsObject(AbstractAjaxProcessor, {

filterMe: function(){

var vuserid = gs.getUserID();

vReturn = "";

      vIsTrue = this.isTrue();

if (vIsTrue== false)

{

vReturn = vuserid;}

else

{

vReturn = this.GetMyBoss();

}

return vReturn;

},

isTrue: function(){

var vuserid = gs.getUserID();

var ObjUser = new GlideRecord('sys_user');

ObjUser.get(vuserid);

var vistrue= ObjUser.u_istrue;

return vistrue;

},

GetMyBoss: function(){

var vuserid = gs.getUserID();

var ObjUser = new GlideRecord('sys_user');

ObjUser.get(vuserid);

var vmyboss= ObjUser.u_myboss;

return vmyboss;

},

type: 'appLogin'

});

Dynamic FIlter Options

find_real_file.png

  • new x_appLogin().filterMe()
    • org.mozilla.javascript.EcmaError: "x_appLogin" is not defined.     Caused by error in <refname> at line 1==>     1: javascript: new x_appLogin().filterMe();
  • new x_appLogin.filterMe();
    • org.mozilla.javascript.EcmaError: "x_appLogin" is not defined.     Caused by error in Phase 2 Jelly: file:/glide/nodes/xxxxxxxxxxxxxxxx004_16033/webapps/glide/itil/WEB-INF/ui.jtemplates/doctype/template_bar.xml.2 at line 1==>     1: new x_appLogin().filterMe();
  • new appLogin.filterMe();
    • org.mozilla.javascript.EcmaError: undefined is not a function. Caused by error in <refname> at line 1 ==> 1: javascript: new appLogin.filterMe();
  • gs.include('appLogin'); filterMe();           OR         javascript:gs.include('appLogin'); filterMe();
    • org.mozilla.javascript.EcmaError: "filterMe" is not defined.     Caused by error in Phase 2 Jelly: file:/glide/nodes//4_16033/webapps/glide/itil/WEB-INF/ui.jtemplates/doctype/template_bar.xml.2 at line 1==>     1: gs.include('appLogin'); filterMe();
  • applogin.filterMe();
    • org.mozilla.javascript.EcmaError: "applogin" is not defined.     Caused by error in <refname> at line 1==>     1: applogin.filterMe();
  • javascript:applogin.filterMe();
    • org.mozilla.javascript.EcmaError: "applogin" is not defined.     Caused by error in Phase 2 Jelly: file:/glide/nodes16033/webapps/glide/itil/WEB-INF/ui.jtemplates/doctype/template_bar.xml.2 at line 1==>     1: javascript:applogin.filterMe();

BUT

Anything happens on my filter,

What am i making for isn't work?

1 ACCEPTED SOLUTION

Can you just try without javascript in your dynamic filter's script field (in your screen shot you are using javascript keyword), like,



new appLogin().filterMe();



OR



gs.include('appLogin');new appLogin().filterMe();


View solution in original post

16 REPLIES 16

Thanks!


Sohel2
Kilo Contributor

Hi,

I am facing an issue while fetching parameters from the URL in my script include.

I am calling this script from dynamic filter options and it is not able to identify ServiceNow objects and functions. (i.e. $sp, GlideURL)

I also tried to fetch parameters from DOM elements using window and document objects but these objects are also undefined.

In one of the article, I read that whatever script include I am calling from dynamic filter option will run inside a sandbox and due to security it won't allow me to use such objects.

Is there any workaround to resolve this issue?

My main goal is to generate a dynamic report which relies on the parameter that I am planning to fetch from URL.

Thanks.