Help with Workflow script = forEach

Lon Landry4
Mega Sage
I can get the script below to work for a single record without any of the forEach function lines below...
But, I must be so missing something when trying to loop through this array (mrvsValues).
 
Any suggestions?
 
 
var mrvsValues = current.variables.mrvs_sys_ids;
gs.info("payload = "+ mrvsValues);
 
mrvsValues.forEach(function (value){
var payloadParsed = JSON.parse(mrvsValues); //this gets my input readable
gs.info('Parsed: '+payloadParsed);
var grAsset = new GlideRecord('alm_hardware');
grAsset.addQuery('sys_id', payloadParsed);
grAsset.query();
if (grAsset.next()){
grAsset.install_status = '6';
grAsset.update();
}
});
1 ACCEPTED SOLUTION

SanjivMeher
Kilo Patron
Kilo Patron

I think you are suppose to parse it to JSON before the loop. Also can you try the for loop?

 

var mrvsValues = current.variables.mrvs_sys_ids;
gs.info("payload = "+ mrvsValues);
var payloadParsed = JSON.parse(mrvsValues); //this gets my input readable
for(var i in payloadParsed)
{
gs.info('Parsed: '+payloadParsed[i]);
var grAsset = new GlideRecord('alm_hardware');
grAsset.addQuery('sys_id', payloadParsed[i]);
grAsset.query();
if (grAsset.next()){
grAsset.install_status = '6';
grAsset.update();
}
}

 


Please mark this response as correct or helpful if it assisted you with your question.

View solution in original post

7 REPLIES 7

Elijah Aromola
Mega Sage

You need to parse each value as you loop through the array.

 

var mrvsValues = current.variables.mrvs_sys_ids;
gs.info("payload = " + mrvsValues);

mrvsValues.forEach(function (value) {
    var payloadParsed = JSON.parse(value); //this gets my input readable
    gs.info('Parsed: ' + payloadParsed);
    var grAsset = new GlideRecord('alm_hardware');
    grAsset.addQuery('sys_id', payloadParsed);
    grAsset.query();
    if (grAsset.next()) {
        grAsset.install_status = '6';
        grAsset.update();
    }
});

 

No success with suggestion above. I see an error  in log

loadRow failure: java.lang.NullPointerException:

SanjivMeher
Kilo Patron
Kilo Patron

I think you are suppose to parse it to JSON before the loop. Also can you try the for loop?

 

var mrvsValues = current.variables.mrvs_sys_ids;
gs.info("payload = "+ mrvsValues);
var payloadParsed = JSON.parse(mrvsValues); //this gets my input readable
for(var i in payloadParsed)
{
gs.info('Parsed: '+payloadParsed[i]);
var grAsset = new GlideRecord('alm_hardware');
grAsset.addQuery('sys_id', payloadParsed[i]);
grAsset.query();
if (grAsset.next()){
grAsset.install_status = '6';
grAsset.update();
}
}

 


Please mark this response as correct or helpful if it assisted you with your question.

Thanks a million SanjivMeher!