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 call variable value from one function to other function

divya123
Giga Contributor

Below script from executeSample function i need to take date2  variable value and pass it to addSchedule2 function , please help me your suggestions.

gs.include('DurationCalculator');
executeSample();
function executeSample(){
var dc = new DurationCalculator();
addSchedule(dc);
var created = '22-Nov-2019 11:25:31';
var gdt = new GlideDateTime(created);
dc.setStartDateTime(gdt);
if(!dc.calcDuration(2*8*3600)){ // 2 days
gs.log("*** Error calculating duration");
return;
}
gs.log("calcDuration no schedule: " + dc.getEndDateTime());
var date2 = dc.getEndDateTime();
gs.print(dc.getEndDateTime());
}

function addSchedule(durationCalculator){
// Load the "8-5 weekdays excluding holidays" schedule into our duration calculator.
var scheduleName = "8-5 weekdays";
var grSched = new GlideRecord('cmn_schedule');
grSched.addQuery('name', scheduleName);
grSched.query();
if(!grSched.next()){
gs.log('*** Could not find schedule "'+ scheduleName +'"');
return;
}
durationCalculator.setSchedule(grSched.getUniqueValue(),"IST");
}

gs.include('DurationCalculator');
executeSample2();
function executeSample2(){

var dc = new DurationCalculator();
addSchedule2(dc);
var created = date2;
var gdt = new GlideDateTime(created);
dc.setStartDateTime(gdt);
if(!dc.calcDuration(2*8*3600)){ // 2 days
gs.log("*** Error calculating duration");
return;
}
gs.log("calcDuration no schedule: " + dc.getEndDateTime());
var date3 = dc.getEndDateTime();
gs.print(dc.getEndDateTime());
}

function addSchedule2(durationCalculator){
// Load the "8-5 weekdays excluding holidays" schedule into our duration calculator.
var scheduleName = "8-5 weekdays";
var grSched = new GlideRecord('cmn_schedule');
grSched.addQuery('name', scheduleName);
grSched.query();
if(!grSched.next()){
gs.log('*** Could not find schedule "'+ scheduleName +'"');
return;
}
durationCalculator.setSchedule(grSched.getUniqueValue(),"IST");
}

1 ACCEPTED SOLUTION

Dubz
Mega Sage

You can use the function to set the value of a variable outside the context of the function, then you can use it as an argument in another function.

gs.include('DurationCalculator');
var date2 = executeSample();  //set the variable value by calling the function

function executeSample(){
var dc = new DurationCalculator();
addSchedule(dc);
var created = '22-Nov-2019 11:25:31';
var gdt = new GlideDateTime(created);
dc.setStartDateTime(gdt);
if(!dc.calcDuration(2*8*3600)){ // 2 days
gs.log("*** Error calculating duration");
return;
}
gs.log("calcDuration no schedule: " + dc.getEndDateTime());
return = dc.getEndDateTime();
gs.print(dc.getEndDateTime());
}

function addSchedule(durationCalculator){
// Load the "8-5 weekdays excluding holidays" schedule into our duration calculator.
var scheduleName = "8-5 weekdays";
var grSched = new GlideRecord('cmn_schedule');
grSched.addQuery('name', scheduleName);
grSched.query();
if(!grSched.next()){
gs.log('*** Could not find schedule "'+ scheduleName +'"');
return;
}
durationCalculator.setSchedule(grSched.getUniqueValue(),"IST");
}

gs.include('DurationCalculator');
executeSample2(date2);  //send the variable in as a parameter to the function

function executeSample2(date){  //add the variable as an argument
var dc = new DurationCalculator();
addSchedule2(dc);
var created = date;
var gdt = new GlideDateTime(created);
dc.setStartDateTime(gdt);
if(!dc.calcDuration(2*8*3600)){ // 2 days
gs.log("*** Error calculating duration");
return;
}
gs.log("calcDuration no schedule: " + dc.getEndDateTime());
var date3 = dc.getEndDateTime();
gs.print(dc.getEndDateTime());
}

function addSchedule2(durationCalculator){
// Load the "8-5 weekdays excluding holidays" schedule into our duration calculator.
var scheduleName = "8-5 weekdays";
var grSched = new GlideRecord('cmn_schedule');
grSched.addQuery('name', scheduleName);
grSched.query();
if(!grSched.next()){
gs.log('*** Could not find schedule "'+ scheduleName +'"');
return;
}
durationCalculator.setSchedule(grSched.getUniqueValue(),"IST");
}

 

View solution in original post

4 REPLIES 4

Dubz
Mega Sage

You can use the function to set the value of a variable outside the context of the function, then you can use it as an argument in another function.

gs.include('DurationCalculator');
var date2 = executeSample();  //set the variable value by calling the function

function executeSample(){
var dc = new DurationCalculator();
addSchedule(dc);
var created = '22-Nov-2019 11:25:31';
var gdt = new GlideDateTime(created);
dc.setStartDateTime(gdt);
if(!dc.calcDuration(2*8*3600)){ // 2 days
gs.log("*** Error calculating duration");
return;
}
gs.log("calcDuration no schedule: " + dc.getEndDateTime());
return = dc.getEndDateTime();
gs.print(dc.getEndDateTime());
}

function addSchedule(durationCalculator){
// Load the "8-5 weekdays excluding holidays" schedule into our duration calculator.
var scheduleName = "8-5 weekdays";
var grSched = new GlideRecord('cmn_schedule');
grSched.addQuery('name', scheduleName);
grSched.query();
if(!grSched.next()){
gs.log('*** Could not find schedule "'+ scheduleName +'"');
return;
}
durationCalculator.setSchedule(grSched.getUniqueValue(),"IST");
}

gs.include('DurationCalculator');
executeSample2(date2);  //send the variable in as a parameter to the function

function executeSample2(date){  //add the variable as an argument
var dc = new DurationCalculator();
addSchedule2(dc);
var created = date;
var gdt = new GlideDateTime(created);
dc.setStartDateTime(gdt);
if(!dc.calcDuration(2*8*3600)){ // 2 days
gs.log("*** Error calculating duration");
return;
}
gs.log("calcDuration no schedule: " + dc.getEndDateTime());
var date3 = dc.getEndDateTime();
gs.print(dc.getEndDateTime());
}

function addSchedule2(durationCalculator){
// Load the "8-5 weekdays excluding holidays" schedule into our duration calculator.
var scheduleName = "8-5 weekdays";
var grSched = new GlideRecord('cmn_schedule');
grSched.addQuery('name', scheduleName);
grSched.query();
if(!grSched.next()){
gs.log('*** Could not find schedule "'+ scheduleName +'"');
return;
}
durationCalculator.setSchedule(grSched.getUniqueValue(),"IST");
}

 

divya123
Giga Contributor

Hi David, 

thank you for your quick response, if i execute background script for this  date2 and date3 both are coming same value , it should not come same value,  based on date2 value date3 value has to change rgt 

If you're in background scripts you might have to wrap the whole thing up in a function eg:

runFunctions()
function runFunctions(){
var date2 = executeSample();
executeSample2(date2);
}

function executeSample(){
//code
}
etc etc

I haven't tested the code, it's just a method you can use. To have a variable from one function context available in another you can either populate a variable in the global context or call the other function from within the first and pass through the variable as an argument eg:

function executeSample(){
var dc = new DurationCalculator();
addSchedule(dc);
var created = '22-Nov-2019 11:25:31';
var gdt = new GlideDateTime(created);
dc.setStartDateTime(gdt);
if(!dc.calcDuration(2*8*3600)){ // 2 days
gs.log("*** Error calculating duration");
return;
}
gs.log("calcDuration no schedule: " + dc.getEndDateTime());
var date2 = dc.getEndDateTime();
executeSample2(date2);
gs.print(dc.getEndDateTime());
}

divya123
Giga Contributor

thank you David once again it is working as expected.