为了优化我的代码,我正在尝试进行批量更新。我不想在循环上调用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);
这是我得到的错误:
范围宽度不正确,为1,但应为6
谢谢!
答案 0 :(得分:1)
tempValuesArr.push(secondSheetRange.getValues()[0]);
secondSheetRange.getValues()返回一个二维数组,其中只需要一个行数组
答案 1 :(得分:1)
我认为问题在于你将二维数组([[CellA2, CellB2], [CellA3, CellB3]]
)推入一个1d数组([]
),留下一个3d数组([[[CellA2, CellB2], [CellA3, CellB3]]]
)。
要使用setvalues,您需要一个2d([[CellA2, CellB2], [CellA3, CellB3]]
- 2行OR [[CellA2, CellB2]]
- 1行)值数组。
试试这个,它只会将第一个1d数组([CellA2, CellB2, CellC2]
)从该范围推送到您在开始时创建的空数组中。更多信息Here。
tempValuesArr.push(secondSheetRange.getValues()[0])