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.

how to create dynamic encoded query

Krishna Nagara1
ServiceNow Employee
ServiceNow Employee

Hi ,  

Goal: to calculate incident opened in each month until the current month

Question: Can i use a dynamic placeholder( date ) in gs.dateGenerate() method.  

Details: I am trying to use gs.dateGenerate(placeholder for a date value) by supplying the argument dynamically. I am trying to construct a date with gs.monthsAgoStart and gs.monthsagoEnd . something like this....  

 

1> var startDate = gs.monthsAgoStart(7);

2> var endDate = gs.monthsAgoEnd(7);

3> var encodedQuery = "active=true^sys_created_onBETWEENjavascript:gs.dateGenerate(startDate)@javascript:gs.dateGenerate(endDate)";

4>       var gr = new GlideRecord('incident');

5>     gr.addEncodedQuery(encodedQuery);

6>       gr.query();  

 

On line 3 when i try and plug the variable startDate and endDate the query does not run. If is use gs.monthsAgoStart() directly it works. However my need is that I use a variable   something like this....          

 

for(int i=0;i<8;i++){

1> var startDate = gs.monthsAgoStart(i);

2> var endDate = gs.monthsAgoEnd(i);

3> var encodedQuery = "active=true^sys_created_onBETWEENjavascript:gs.dateGenerate(startDate)@javascript:gs.dateGenerate(endDate)";

4>       var gr = new GlideRecord('incident');

5>     gr.addEncodedQuery(encodedQuery);

6>       gr.query();   }

observe the i counter in monthsAgoStart() and monthAgoEnd() to calculate incident in different months.  

 

Any suggestions.help. Appreciated.    

2 REPLIES 2

acretion
Tera Expert

havent tried this, but try something like ...




var encodedQuery = "active=true^sys_created_onBETWEENjavascript:gs.dateGenerate(" + startDate + ")@javascript:gs.dateGenerate(" + endDate + ")";


Hi Chris,



Thanks for reply. Actually I found the issue...when you use gs.monthsAgosStart or any date time related funtion it is internally using gs.dateGenerate and I was again using the same in my encodedQuery,which is wrong. I tried this active=true^sys_created_onBETWEEN"+startDate+"@"+endDate; and it worked. Thanks to Abhishek Rakshe.