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.

Flow Designer Update Record script returns different value than background script

Brad59
Giga Guru

I need a scheduled manner to return seconds from epoch. getNumericValue returns milliseconds. Whenever I take any math actions on the return of getNumericValue, the Flow Designer outputs the value in scientific notation. 

If I run the very simple code below in a background script (developer toolkit). It returns the appropriate integer value (1643903153). If I run the same code in a Flow Designer Update Record Field Value script it returns in scientific notation (1.643903153E9). I have tried a variety of ways to resolve this but have been unsuccessful so far. Do anyone have an explanation or way to resolve?

I have tried using the Number() function as well as using the toFixed function that I have seen on Stackoverflow. I will be attempting to convert the return of getNumericValue to a string, truncating it, then converting it back to a number. Another option is to just use a Scheduled Job but I'm not quite there yet.

 

// Backgroun script
var gdt = new GlideDateTime();
var now = gdt.getNumericValue();
now = Math.round(now / 1000);
gs.print(now);
// now == 1643903153

// Flow designer
var gdt = new GlideDateTime();
var now = gdt.getNumericValue();
now = Math.round(now / 1000);
return now;
// now == 1.643903153E9

 

1 ACCEPTED SOLUTION

Brad59
Giga Guru

This was a rookie mistake on my part. The field type I was saving this to was a string so the below code solved my issue.

var gdt = new GlideDateTime();
var now = gdt.getNumericValue();
now = now.toString();
now = now.slice(0, -3);
return now;

View solution in original post

1 REPLY 1

Brad59
Giga Guru

This was a rookie mistake on my part. The field type I was saving this to was a string so the below code solved my issue.

var gdt = new GlideDateTime();
var now = gdt.getNumericValue();
now = now.toString();
now = now.slice(0, -3);
return now;