We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

How to pass multiple Multi Row variable set values as JSON using Script in a Flow Designer

User205031
Tera Contributor

Hi All,

I have a catalog form with 2 variable sets:

User205031_0-1743155645823.png

 

I want to pass the values in JSON format so that the output looks like:

"[{\"serial\":\"1\",\"datetime\":\"2\",\"target_version\":\"3\"},{\"site_wan_iterface\":\"4\",\"port_num\":\"5\",\"bandwidth\":\"6\"}]"

 

I have written below script:

function addOSUpgrade(grRITM2) {
        var ritm_variables2 = {};
        for (var prop2 in grRITM2.variables) {
            if (prop2 == 'os_upgrade_configuration') {
                ritm_variables2.vars = JSON.parse(grRITM2.variables.os_upgrade_configuration.toString());
                var add_os = [];
                for (var i = 0; i < ritm_variables2.vars.length; i++) {
                    var sserial = setSerial(ritm_variables2.vars[i].serial);
                    var sdatetime = setDateTime(ritm_variables2.vars[i].datetime);
                    var starget = setTargetVersion(ritm_variables2.vars[i].target_version);
                    var obj2 = {
                        "serial": sserial,
                        "datetime": sdatetime,
                        "target_version": starget
                    }
                    add_os.push(obj2);
                }
            }
        }
        return JSON.stringify(add_os);
    }
 
function addWANInterface(grRITM3) {
        var ritm_variables3 = {};
        for (var prop3 in grRITM3.variables) {
            if (prop3 == 'wan_interface_bandwidth_configuration') {
                ritm_variables3.vars = JSON.parse(grRITM3.variables.wan_interface_bandwidth_configuration.toString());
                var add_wan = [];
                for (var i = 0; i < ritm_variables3.vars.length; i++) {
                    var ssitewan = setWanInterface(ritm_variables3.vars[i].site_wan_iterface);
                    var sportnum = setPortNum(ritm_variables3.vars[i].port_num);
                    var sbandwidth = setBandwidth(ritm_variables3.vars[i].bandwidth);
                    var obj3 = {
                        "site_wan_iterface": ssitewan,
                        "port_num": sportnum,
                        "bandwidth": sbandwidth
                    }
                    add_wan.push(obj3);
                }
            }
        }
        return JSON.stringify(add_wan);
    }
 
var grRITM2 = new GlideRecord('sc_req_item');
    grRITM2.addQuery('number', inputs.ritm_no);
    grRITM2.query();
    if (grRITM2.next()) {
        var finalObj = addOSUpgrade(grRITM2);
    }

    var grRITM3 = new GlideRecord('sc_req_item');
    grRITM3.addQuery('number', inputs.ritm_no);
    grRITM3.query();
    if (grRITM3.next()) {
        var finalObj = addWANInterface(grRITM3);
    }
 
outputs.sdwans = JSON.stringify(finalObj);
 
How to pass the values in the output.sdwans with the format below shown:
"[{\"serial\":\"1\",\"datetime\":\"2\",\"target_version\":\"3\"},{\"site_wan_iterface\":\"4\",\"port_num\":\"5\",\"bandwidth\":\"6\"}]"
1 ACCEPTED SOLUTION

Ankur Bawiskar
Tera Patron

@User205031 

so basically you want to combine both the json array and keep only 1 and then send

try this

function addOSUpgrade(grRITM2) {
    var ritm_variables2 = {};
    var add_os = [];
    for (var prop2 in grRITM2.variables) {
        if (prop2 == 'os_upgrade_configuration') {
            ritm_variables2.vars = JSON.parse(grRITM2.variables.os_upgrade_configuration.toString());
            for (var i = 0; i < ritm_variables2.vars.length; i++) {
                var sserial = setSerial(ritm_variables2.vars[i].serial);
                var sdatetime = setDateTime(ritm_variables2.vars[i].datetime);
                var starget = setTargetVersion(ritm_variables2.vars[i].target_version);
                var obj2 = {
                    "serial": sserial,
                    "datetime": sdatetime,
                    "target_version": starget
                };
                add_os.push(obj2);
            }
        }
    }
    return add_os;
}

function addWANInterface(grRITM3) {
    var ritm_variables3 = {};
    var add_wan = [];
    for (var prop3 in grRITM3.variables) {
        if (prop3 == 'wan_interface_bandwidth_configuration') {
            ritm_variables3.vars = JSON.parse(grRITM3.variables.wan_interface_bandwidth_configuration.toString());
            for (var i = 0; i < ritm_variables3.vars.length; i++) {
                var ssitewan = setWanInterface(ritm_variables3.vars[i].site_wan_iterface);
                var sportnum = setPortNum(ritm_variables3.vars[i].port_num);
                var sbandwidth = setBandwidth(ritm_variables3.vars[i].bandwidth);
                var obj3 = {
                    "site_wan_iterface": ssitewan,
                    "port_num": sportnum,
                    "bandwidth": sbandwidth
                };
                add_wan.push(obj3);
            }
        }
    }
    return add_wan;
}

var grRITM2 = new GlideRecord('sc_req_item');
grRITM2.addQuery('number', inputs.ritm_no);
grRITM2.query();
var finalObj = [];

if (grRITM2.next()) {
    finalObj = finalObj.concat(addOSUpgrade(grRITM2));
}

var grRITM3 = new GlideRecord('sc_req_item');
grRITM3.addQuery('number', inputs.ritm_no);
grRITM3.query();

if (grRITM3.next()) {
    finalObj = finalObj.concat(addWANInterface(grRITM3));
}

outputs.sdwans = JSON.stringify(finalObj);

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

2 REPLIES 2

Ankur Bawiskar
Tera Patron

@User205031 

so basically you want to combine both the json array and keep only 1 and then send

try this

function addOSUpgrade(grRITM2) {
    var ritm_variables2 = {};
    var add_os = [];
    for (var prop2 in grRITM2.variables) {
        if (prop2 == 'os_upgrade_configuration') {
            ritm_variables2.vars = JSON.parse(grRITM2.variables.os_upgrade_configuration.toString());
            for (var i = 0; i < ritm_variables2.vars.length; i++) {
                var sserial = setSerial(ritm_variables2.vars[i].serial);
                var sdatetime = setDateTime(ritm_variables2.vars[i].datetime);
                var starget = setTargetVersion(ritm_variables2.vars[i].target_version);
                var obj2 = {
                    "serial": sserial,
                    "datetime": sdatetime,
                    "target_version": starget
                };
                add_os.push(obj2);
            }
        }
    }
    return add_os;
}

function addWANInterface(grRITM3) {
    var ritm_variables3 = {};
    var add_wan = [];
    for (var prop3 in grRITM3.variables) {
        if (prop3 == 'wan_interface_bandwidth_configuration') {
            ritm_variables3.vars = JSON.parse(grRITM3.variables.wan_interface_bandwidth_configuration.toString());
            for (var i = 0; i < ritm_variables3.vars.length; i++) {
                var ssitewan = setWanInterface(ritm_variables3.vars[i].site_wan_iterface);
                var sportnum = setPortNum(ritm_variables3.vars[i].port_num);
                var sbandwidth = setBandwidth(ritm_variables3.vars[i].bandwidth);
                var obj3 = {
                    "site_wan_iterface": ssitewan,
                    "port_num": sportnum,
                    "bandwidth": sbandwidth
                };
                add_wan.push(obj3);
            }
        }
    }
    return add_wan;
}

var grRITM2 = new GlideRecord('sc_req_item');
grRITM2.addQuery('number', inputs.ritm_no);
grRITM2.query();
var finalObj = [];

if (grRITM2.next()) {
    finalObj = finalObj.concat(addOSUpgrade(grRITM2));
}

var grRITM3 = new GlideRecord('sc_req_item');
grRITM3.addQuery('number', inputs.ritm_no);
grRITM3.query();

if (grRITM3.next()) {
    finalObj = finalObj.concat(addWANInterface(grRITM3));
}

outputs.sdwans = JSON.stringify(finalObj);

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

Hi Ankur,

 

It is working now.

 

Thank you!