Search code examples
google-apps-scriptgoogle-sheets-macros

How to convert an array [aaa,bbb,ccc] to [[aaa],[bbb],[ccc]]


I have:

var array1 = [[aaa],[bbb]]; //SpreadsheetApp.getActiveSheet().getRange('A2:A').getValues();
var array2 = [[ccc],[vvv],[fff]]; //SpreadsheetApp.getActiveSheet().getRange('B2:B').getValues();

Then i concatenate arrays:

const newArray = [];

array1.forEach( function(item1) {
  array2.forEach( function(item2) {
    newArray.push(item1 + " " + item2)
  })
});

Result of this function:

Logger.log(newArray);
//[aaa ccc, aaa vvv, aaa fff, bbb ccc, bbb vvv, bbb fff]

How can I convert the result to the next?

[[aaa ccc], [aaa vvv], [aaa fff], [bbb ccc], [bbb vvv], [bbb fff]]

I need this to put values ​​in a column:

sheet.getRange('D2:D').setValues(newArray)

Otherwise, an error is displayed: Unable to convert Array to number [][]


Solution

  • Push a array instead:

    var array1 = [["aaa"],["bbb"]]; //SpreadsheetApp.getActiveSheet().getRange('A2:A').getValues();
    var array2 = [["ccc"],["vvv"],["fff"]]; //SpreadsheetApp.getActiveSheet().getRange('B2:B').getValues();
    
    
    const newArray = [];
    
    array1.forEach( function(item1) {
      array2.forEach( function(item2) {
        newArray.push([item1 + " " + item2])
      })
    });
    console.log(newArray)