Get all the values in an array

Phanideepthi
Tera Contributor

HI All,

 

I have an requirement where I am using for loop to get the values from multi row variable set. Based on the no.of disks selected I am sending the values to 3rd party through an API. It is working for 2 disks but when I select 20 disks I am not able to get all the disk values. Here is my script.

 

 
        r.setStringParameterNoEscape('RITMNumber', current.getValue('number').toString());
        r.setStringParameterNoEscape('SecondaryNode1', current.variables.secondary_node_1.getDisplayValue());
        r.setStringParameterNoEscape('SecondaryNode2', current.variables.secondary_node_2.getDisplayValue());
        r.setStringParameterNoEscape('SecondaryNode3', current.variables.secondary_node_3.getDisplayValue());
        r.setStringParameterNoEscape('SecondaryNode4', current.variables.secondary_node_4.getDisplayValue());
        r.setStringParameterNoEscape('SecondaryNode5', current.variables.secondary_node_5.getDisplayValue());
        r.setStringParameterNoEscape('Datastore', current.variables.data_stores.getDisplayValue());
        r.setStringParameterNoEscape('Datacenter', current.variables.data_center.getDisplayValue());
        if (current.variables.select_oracle_environment == 'Standalone') {
            r.setStringParameterNoEscape('PrimaryVMName', current.variables.select_the_standalone_servers.getDisplayValue());
        } else {
            r.setStringParameterNoEscape('PrimaryVMName', current.variables.primary_node.getDisplayValue());
        }
        var tsk = current.variables.no_of_disks_needs_to_be_created;
        for (var i = 0; i <= tsk; i++) {
            var size1 = current.variables.disk_label_and_size_gb;
             gs.addInfoMessage("variable" + size1[i]);
            if (i == 0) {
                r.setStringParameterNoEscape('DiskLabel1', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize1', size1[i].disk_size1);
                // gs.addInfoMessage("variable" + size1[i].disk_size1);
            } else if (i == 1) {
                r.setStringParameterNoEscape('DiskLabel2', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize2', size1[i].disk_size1);
            } else if (i == 2) {
                r.setStringParameterNoEscape('DiskLabel3', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize3', size1[i].disk_size1);
            } else if (i == 3) {
                r.setStringParameterNoEscape('DiskLabel4', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize4', size1[i].disk_size1);
            } else if (i == 4) {
                r.setStringParameterNoEscape('DiskLabel5', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize5', size1[i].disk_size1);
            } else if (i == 5) {
                r.setStringParameterNoEscape('DiskLabel6', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize6', size1[i].disk_size1);
            } else if (i == 6) {
                r.setStringParameterNoEscape('DiskLabel7', size[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize7', size1[i].disk_size1);
            } else if (i == 7) {
                r.setStringParameterNoEscape('DiskLabel8', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize8', size1[i].disk_size1);
            } else if (i == 8) {
                r.setStringParameterNoEscape('DiskLabel9', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize9', size1[i].disk_size1);
            } else if (i == 9) {
                r.setStringParameterNoEscape('DiskLabel10', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize10', size1[i].disk_size1);
            } else if (i == 10) {
                r.setStringParameterNoEscape('DiskLabel11', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize11', size1[i].disk_size1);
            } else if (i == 11) {
                r.setStringParameterNoEscape('DiskLabel12', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize12', size1[i].disk_size1);
            } else if (i == 12) {
                r.setStringParameterNoEscape('DiskLabel13', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize13', size1[i].disk_size1);
            } else if (i == 13) {
                r.setStringParameterNoEscape('DiskLabel14', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize14', size1[i].disk_size1);
            } else if (i == 14) {
                r.setStringParameterNoEscape('DiskLabel15', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize15', size1[i].disk_size1);
            } else if (i == 15) {
                r.setStringParameterNoEscape('DiskLabel16', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize16', size1[i].disk_size1);
            } else if (i == 16) {
                r.setStringParameterNoEscape('DiskLabel17', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize17', size1[i].disk_size1);
            } else if (i == 17) {
                r.setStringParameterNoEscape('DiskLabel18', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize18', size1[i].disk_size1);
            } else if (i == 18) {
                r.setStringParameterNoEscape('DiskLabel19', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize19', size1[i].disk_size1);
            } else if (i == 19) {
                r.setStringParameterNoEscape('DiskLabel20', size1[i].disk_label1);
                r.setStringParameterNoEscape('DiskSize20', size1[i].disk_size1);
            }
        }
 
 
Phanideepthi_0-1732635823083.png

 

I am only getting 7 values from array which is from 33 to 39

 

Phanideepthi_1-1732635948656.png

 Please help me to get all the 20 rows values in the array.

 

Thanks

4 REPLIES 4

Brad Bowman
Kilo Patron
Kilo Patron

I don't see what would be preventing the remaining rows in this case, but unless there's the possibility that the MRVS will contain more rows than the number supplied in the variable, you can just use this approach to retrieve the full MRVS then loop through the rows

var mrvs = current.variables.disk_label_and_size_gb;
var rowCount = mrvs.getRowCount();
for (var i=0; i<rowCount; i++) {
	var row = mrvs.getRow(i);
	if (i==0) {
        r.setStringParameterNoEscape('DiskLabel1', row.disk_label1);
        r.setStringParameterNoEscape('DiskSize1', row.disk_size1);
    } else if (i==1) {
	...

It looks similar to your approach, so maybe there's something in the MRVS JSON that is causing it to stop, or you're running into a character limitation in the parameters that you can set?  You could add logs to the remaining if blocks to see if they are being executed.

hi @Brad Bowman  ,

 

Thank for the reply. the code worked for 20 disks but now it is not allowing me to trigger API for lesss than 20.

Please help me with a condition where it should work if we select 1,2 ,3 ...... till 20.

 

Thanks

That's not making sense to me.  This code just gets the contents of the MRVS then runs once for each row of data, so it's dynamic - the loop won't run at all for an empty MRVS, it will run once when there's one row... are you perhaps saying that you are always populating 20 rows in the MRVS, but sometimes only want to trigger the API for less than 20 rows?

Runjay Patel
Giga Sage

Hi @Phanideepthi ,

 

Try using below code.

var mrvs = current.variables.disk_label_and_size_gb;
var rowCount = mrvs.getRowCount();
for (var i=1; i<=rowCount; i++) {
	var row = mrvs.getRow(i);
	
        r.setStringParameterNoEscape('DiskLabel'+i, row.disk_label1);
        r.setStringParameterNoEscape('DiskSize'+i, row.disk_size1);
    } 

 

-------------------------------------------------------------------------

If you found my response helpful, please consider selecting "Accept as Solution" and marking it as "Helpful." This not only supports me but also benefits the community.


Regards
Runjay Patel - ServiceNow Solution Architect
YouTube: https://www.youtube.com/@RunjayP
LinkedIn: https://www.linkedin.com/in/runjay

-------------------------------------------------------------------------