- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-05-2018 07:40 AM
Hello,
Wish you all a very Happy New Year.
I am trying to build an Indicator to calculate the Summed age of Assets (to later find out the Average age). The asset table has the columns for Release Date and Retired Date and I need to calculate their difference. The screenshot (A) has the format of the dates.
The 2nd screenshot has the script screen and I am using the above variables. I am not proficient with scripts at all so I am pretty sure I am doing something totally wrong.
var diff=function(x,y){return y.dateNumericValue() - x.dateNumericValue();};
var years=function(x,y){return diff(x,y)/(365*24*60*60*1000);};
years(current.u_avg_hw_release_date, current.retired_date_at);
The job returns the error:
Error during JavaScript evaluation com.snc.pa.dc.ScriptException: JavaScript evaluation returned: NaN in script: var diff=function(x,y){return y.dateNumericValue() - x.dateNumericValue();};
var years=function(x,y){return diff(x,y)/(365*24*60*60*1000);};
years(current.u_avg_hw_release_date, current.retired_date_at);
at com.snc.pa.dc.Script.handleException(Script.java:215)
at com.snc.pa.dc.Script.evaluate(Script.java:179)
at com.snc.pa.dc.Script.evaluate(Script.java:156)
at com.snc.pa.dc.DataCollector.collect(DataCollector.java:261)
at com.snc.pa.dc.DataCollector.collect(DataCollector.java:214)
at com.snc.pa.dc.DataCollector.collect(DataCollector.java:172)
at com.snc.pa.dc.DataCollectorJob.collect(DataCollectorJob.java:246)
at com.snc.pa.dc.DataCollectorJob.collectWithMutex(DataCollectorJob.java:162)
at com.snc.pa.dc.DataCollectorJob.execute(DataCollectorJob.java:147)
at com.glide.schedule.JobExecutor.executeJob(JobExecutor.java:103)
at com.glide.schedule.JobExecutor.execute(JobExecutor.java:89)
at com.glide.schedule.GlideScheduleWorker.executeJob(GlideScheduleWorker.java:219)
at com.glide.schedule.GlideScheduleWorker.lambda$process$39(GlideScheduleWorker.java:161)
at com.glide.worker.TransactionalWorkerThread.executeInTransaction(TransactionalWorkerThread.java:35)
at com.glide.schedule.GlideScheduleWorker.process(GlideScheduleWorker.java:161)
at com.glide.schedule.GlideScheduleWorker.run(GlideScheduleWorker.java:72)
Caused by: java.lang.Exception: JavaScript evaluation returned: NaN
... 15 more
Can anyone help me correct the script or let me know what am I doing wrong.
Thanks a lot.
Solved! Go to Solution.
- Labels:
-
Dashboard
-
Performance Analytics
-
Reporting

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-06-2018 11:13 AM
Last try
var sgd1 = new GlideDate();
var sgd2 = new GlideDate();
sgd1.setDisplayValue(current.retired.getDisplayValue());
sgd2.setDisplayValue(current.u_abg_hw_release_date.getDisplayValue());
var duration = GlideDate.subtract(sgd1, sgd2);
Math.floor(duration.getDayPart()/365);
Cheers,
Thilo
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-06-2018 09:33 AM
Thank you Thilo.
Yes, indeed. I realized that later and replaced it with correct field names, Your script worked perfectly and returns the correct difference (in days) when I test it with the Sys_ID in Scripts - Background.
So now, Does it have to be added as it is to Scripts. I did that after editing the 2nd line from your code "gr.get('00a96c0d3790200044e0bfc8bcbe5dc3');", since that SysID was an example. At first I tried it with the 2nd line entirely removed:
I received the below error right away in Data Collector, after running the job.
Error during JavaScript evaluation com.snc.pa.dc.ScriptException: JavaScript evaluation returned: Undefined in script: var gr = new GlideRecord('alm_hardware');
var sgd1 = new GlideDate();
sgd1.setDisplayValue(gr.retired.getDisplayValue());
var sgd2 = new GlideDate();
sgd2.setDisplayValue(gr.u_avg_hw_release_date.getDisplayValue());
duration = GlideDate.subtract(sgd1, sgd2);
gs.addInfoMessage(duration.getDayPart());
at com.snc.pa.dc.Script.handleException(Script.java:215)
at com.snc.pa.dc.Script.evaluate(Script.java:176)
at com.snc.pa.dc.Script.evaluate(Script.java:156)
at com.snc.pa.dc.DataCollector.collect(DataCollector.java:261)
at com.snc.pa.dc.DataCollector.collect(DataCollector.java:214)
at com.snc.pa.dc.DataCollector.collect(DataCollector.java:172)
at com.snc.pa.dc.DataCollectorJob.collect(DataCollectorJob.java:246)
at com.snc.pa.dc.DataCollectorJob.collectWithMutex(DataCollectorJob.java:162)
at com.snc.pa.dc.DataCollectorJob.execute(DataCollectorJob.java:147)
at com.glide.schedule.JobExecutor.executeJob(JobExecutor.java:103)
at com.glide.schedule.JobExecutor.execute(JobExecutor.java:89)
at com.glide.schedule.GlideScheduleWorker.executeJob(GlideScheduleWorker.java:219)
at com.glide.schedule.GlideScheduleWorker.lambda$process$39(GlideScheduleWorker.java:161)
at com.glide.worker.TransactionalWorkerThread.executeInTransaction(TransactionalWorkerThread.java:35)
at com.glide.schedule.GlideScheduleWorker.process(GlideScheduleWorker.java:161)
at com.glide.schedule.GlideScheduleWorker.run(GlideScheduleWorker.java:72)
Caused by: java.lang.Exception: JavaScript evaluation returned: Undefined
... 15 more
Then thinking that It needs some reference to the Sys_ID, I changed the 2nd line to "gr.get(sys_id);"
But then got this error:
Error during JavaScript evaluation com.snc.pa.dc.ScriptException: "sys_id" is not defined.ReferenceError: "sys_id" is not defined. (<refname>; line 2) in script: var gr = new GlideRecord('alm_hardware'); gr.get(sys_id); var sgd1 = new GlideDate(); sgd1.setDisplayValue(gr.retired.getDisplayValue()); var sgd2 = new GlideDate(); sgd2.setDisplayValue(gr.u_avg_hw_release_date.getDisplayValue()); duration = GlideDate.subtract(sgd1, sgd2); gs.addInfoMessage(duration.getDayPart()); at com.snc.pa.dc.Script.handleException(Script.java:215) at com.snc.pa.dc.Script.evaluate(Script.java:185) at com.snc.pa.dc.Script.evaluate(Script.java:156) at com.snc.pa.dc.DataCollector.collect(DataCollector.java:261) at com.snc.pa.dc.DataCollector.collect(DataCollector.java:214) at com.snc.pa.dc.DataCollector.collect(DataCollector.java:172) at com.snc.pa.dc.DataCollectorJob.collect(DataCollectorJob.java:246) at com.snc.pa.dc.DataCollectorJob.collectWithMutex(DataCollectorJob.java:162) at com.snc.pa.dc.DataCollectorJob.execute(DataCollectorJob.java:147) at com.glide.schedule.JobExecutor.executeJob(JobExecutor.java:103) at com.glide.schedule.JobExecutor.execute(JobExecutor.java:89) at com.glide.schedule.GlideScheduleWorker.executeJob(GlideScheduleWorker.java:219) at com.glide.schedule.GlideScheduleWorker.lambda$process$39(GlideScheduleWorker.java:161) at com.glide.worker.TransactionalWorkerThread.executeInTransaction(TransactionalWorkerThread.java:35) at com.glide.schedule.GlideScheduleWorker.process(GlideScheduleWorker.java:161) at com.glide.schedule.GlideScheduleWorker.run(GlideScheduleWorker.java:72) Caused by: ReferenceError: "sys_id" is not defined. (<refname>; line 2) at com.glide.script.ScriptEvaluator.evaluateString(ScriptEvaluator.java:161) at com.glide.script.ScriptEvaluator.evaluateString(ScriptEvaluator.java:76) at com.snc.pa.dc.Script.evaluate(Script.java:166) ... 14 more Caused by: ReferenceError: "sys_id" is not defined. (<refname>; line 2) at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:4034) at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:4012) at org.mozilla.javascript.ScriptRuntime.notFoundError(ScriptRuntime.java:4114) at org.mozilla.javascript.ScriptRuntime.name(ScriptRuntime.java:1772) at org.mozilla.javascript.gen._refname__4943._c_script_0(<refname>:2) at org.mozilla.javascript.gen._refname__4943.call(<refname>) at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:563) at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3421) at org.mozilla.javascript.gen._refname__4943.call(<refname>) at org.mozilla.javascript.gen._refname__4943.exec(<refname>) at com.glide.script.ScriptEvaluator.execute(ScriptEvaluator.java:263) at com.glide.script.ScriptEvaluator.evaluateString(ScriptEvaluator.java:110) ... 16 more |
Could you please help me get it to work with the Indicator. Also, I need the summed age in "Years". Can this be easily achieved ?
Thanks a lot for your help.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-06-2018 10:22 AM
Hi Rohit,
my example cannot be transferred to your indicator without some modifications. You do not have to get a GlideRecord object - you already have one! It's called the "current" record.
Try this on your end:
var sgd1 = new GlideDate();
var sgd2 = new GlideDate();
sgd1.setDisplayValue(current.retired.getDisplayValue());
sgd2.setDisplayValue(current.u_abg_hw_release_date.getDisplayValue());
var duration = GlideDate.subtract(sqd1, sqd2);
var years = Math.floor(duration.getDayPart()/365);
return years;
Cheers,
Thilo
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-06-2018 10:41 AM

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-06-2018 10:43 AM
my bad, replace the line and just put "years" in it.
thilo
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-06-2018 11:09 AM
I tried after changing the 7th line to just
years;
and
"years";
both, but it kept showing an exclamation mark in the script screen and job fails with error.
Error during JavaScript evaluation com.snc.pa.dc.ScriptException: "sqd1" is not defined.ReferenceError: "sqd1" is not defined. (<refname>; line 5) in script: var sgd1 = new GlideDate();
var sgd2 = new GlideDate();
sgd1.setDisplayValue(current.retired.getDisplayValue());
sgd2.setDisplayValue(current.u_avg_hw_release_date.getDisplayValue());
var duration = GlideDate.subtract(sqd1, sqd2);
var years = Math.floor(duration.getDayPart()/365);
years;
at com.snc.pa.dc.Script.handleException(Script.java:215)
at com.snc.pa.dc.Script.evaluate(Script.java:185)
at com.snc.pa.dc.Script.evaluate(Script.java:156)
at com.snc.pa.dc.DataCollector.collect(DataCollector.java:261)
at com.snc.pa.dc.DataCollector.collect(DataCollector.java:214)
at com.snc.pa.dc.DataCollector.collect(DataCollector.java:172)
at com.snc.pa.dc.DataCollectorJob.collect(DataCollectorJob.java:246)
at com.snc.pa.dc.DataCollectorJob.collectWithMutex(DataCollectorJob.java:162)
at com.snc.pa.dc.DataCollectorJob.execute(DataCollectorJob.java:147)
at com.glide.schedule.JobExecutor.executeJob(JobExecutor.java:103)
at com.glide.schedule.JobExecutor.execute(JobExecutor.java:89)
at com.glide.schedule.GlideScheduleWorker.executeJob(GlideScheduleWorker.java:219)
at com.glide.schedule.GlideScheduleWorker.lambda$process$39(GlideScheduleWorker.java:161)
at com.glide.worker.TransactionalWorkerThread.executeInTransaction(TransactionalWorkerThread.java:35)
at com.glide.schedule.GlideScheduleWorker.process(GlideScheduleWorker.java:161)
at com.glide.schedule.GlideScheduleWorker.run(GlideScheduleWorker.java:72)
Caused by: ReferenceError: "sqd1" is not defined. (<refname>; line 5)
at com.glide.script.ScriptEvaluator.evaluateString(ScriptEvaluator.java:161)
at com.glide.script.ScriptEvaluator.evaluateString(ScriptEvaluator.java:76)
at com.snc.pa.dc.Script.evaluate(Script.java:166)
... 14 more
Caused by: ReferenceError: "sqd1" is not defined. (<refname>; line 5)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:4034)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:4012)
at org.mozilla.javascript.ScriptRuntime.notFoundError(ScriptRuntime.java:4114)
at org.mozilla.javascript.ScriptRuntime.name(ScriptRuntime.java:1772)
at org.mozilla.javascript.gen._refname__4945._c_script_0(<refname>:5)
at org.mozilla.javascript.gen._refname__4945.call(<refname>)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:563)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3421)
at org.mozilla.javascript.gen._refname__4945.call(<refname>)
at org.mozilla.javascript.gen._refname__4945.exec(<refname>)
at com.glide.script.ScriptEvaluator.execute(ScriptEvaluator.java:263)
at com.glide.script.ScriptEvaluator.evaluateString(ScriptEvaluator.java:110)
... 16 more