如何使用Google Script一次将数组数据附加到电子表格列?

use*_*736 4 arrays multidimensional-array google-sheets google-apps-script

我试图将addArray []的数据立即附加到列A的末尾.但是,我的数组不是多维的,以便能够使用此方法:

这是我添加到数组的方式:

  var toAdd=[];
  var thisurl="red apple http://awebsite.com/1.jpg";
  toAdd.push(thisUrl);
Run Code Online (Sandbox Code Playgroud)

这就是我想立刻追加数组的方式

function AddToSpreadsheet()
{
 var data = SpreadsheetApp.getActiveSheet().getRange('A12:A').getValues();
    var toAdd=["red apple http://awebsite.com/1.jpg",
              "green apple http://1awebsite.com/2.jpg",
              "red apple http://1awebsite.com/3.jpg",
              "rotten apple http://rottenApple.com"];



  if(toAdd.length > 0){
    for(i = 0; i < data.length; ++i){
      if(data[i][0] == ""){break;}
    }
    SpreadsheetApp.getActiveSheet().getRange(12+i, 1, toAdd.length, 1).setValues(toAdd);
  } 

}
Run Code Online (Sandbox Code Playgroud)

如果我使用上面的代码我得到这个错误:

Cannot convert Array to Object[][]. (line 
Run Code Online (Sandbox Code Playgroud)

我的addArray不是多维数组!如何将它转换为多维数组,如下例所示我可以使用上面的代码?

多维数组示例:

var toAdd=[["red apple http://awebsite.com/1.jpg"],
               ["green apple http://1awebsite.com/2.jpg"],
               ["red apple http://1awebsite.com/3.jpg"],
               ["rotten apple http://rottenApple.com"]];
Run Code Online (Sandbox Code Playgroud)

编辑:我在开始时转换了数组并且工作了!

var values_array=["red apple http://awebsite.com/1.jpg",
               "green apple http://1awebsite.com/2.jpg",
               "red apple http://1awebsite.com/3.jpg",
               "rotten apple http://rottenApple.com"];

  var toAddArray = [];
for (i = 0; i < toAdd.length; ++i){
    toAddArray.push([toAdd[i]]);
}
........... 
Run Code Online (Sandbox Code Playgroud)

这样我将整个新数组插入到A列:

............
     SpreadsheetApp.getActiveSheet().getRange(12+i, 1, toAddArray.length, 1).setValues(toAddArray);
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*ach 8

你需要"转置"数组.您可以通过创建新数组并将值附加为具有一个值的数组来实现.

在你调用setValues(toAdd)之前试试

var toAddArray = [];
for (i = 0; i < toAdd.length; ++i){
    toAddArray.push([toAdd[i]]);
}
Run Code Online (Sandbox Code Playgroud)

并用.替换设定值调用

 SpreadsheetApp.getActiveSheet().getRange(12+i, 1, toAdd.length, 1).setValues(toAddArray);
Run Code Online (Sandbox Code Playgroud)

设定值函数需要矩阵作为输入.由于没有原生矩阵,因此需要一个数组数组,其中每个子数组具有相同的长度且不包含数组.
"矩阵"中的每个数组都是一行,每个数组的每个元素都进入一列.
如果您想要一维数组中的一列行,则需要一个具有单元素数组的数组.如果要编写列,则创建一个包含所有值的数组的数组.