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])
为了优化我的代码,我正在尝试进行批量更新。我不想在循环中调用 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])