google 应用程序脚本 - Sheet 上的批处理 setValues()

google apps script - batch setValues() on Sheet

为了优化我的代码,我正在尝试进行批量更新。我不想在循环中调用 setValues() ,而是想将数据存储在数组中,然后在循环后执行一次 setValues() 。但是,我无法让它工作:

var tempValuesArr= [];
var ctr = 0;

for ....{

  //there is only one row needed for every second sheet, get the data at the 2nd 
  //row with 6 columns
  var secondSheetRange = secondSheet.getRange(2, 1, 1, 6);  
  tempValuesArr.push(secondSheetRange.getValues());
  ctr++;
}

//finally, copy these tempValues at another sheet, starting at second row
var anotherSheetRange = anotherSheet.getRange(2, 1, ctr, 6);
anotherSheetRange .setValues(tempValuesArr);  

这是我遇到的错误:

Incorrect range width, was 1 but should be 6

谢谢!

tempValuesArr.push(secondSheetRange.getValues()[0]);

secondSheetRange.getValues() returns 一个二维数组,你只需要一个单行数组

我认为问题在于您将二维数组 ( [[CellA2, CellB2], [CellA3, CellB3]] ) 推入一维数组 ( [] ),留下一个三维数组 ( [[[CellA2, CellB2], [CellA3, CellB3]]] )。

要使用设置值,您需要一个 2d([[CellA2, CellB2], [CellA3, CellB3]]- 2 行或 [[CellA2, CellB2]]- 1 行)值数组。

试试这个,它只会将范围内的第一个一维数组 ( [CellA2, CellB2, CellC2] ) 推入您在开始时创建的空数组中。更多信息 Here.

tempValuesArr.push(secondSheetRange.getValues()[0])