您如何解决“参数(number [])与SpreadsheetApp.Range.setValues的方法签名不匹配"的问题?错误 [英] How do you resolve a "The parameters (number[]) don't match the method signature for SpreadsheetApp.Range.setValues" error
问题描述
我收到此错误:
参数(number [])与SpreadsheetApp.Range.setValues的方法签名不匹配."
"The parameters (number[]) don't match the method signature for SpreadsheetApp.Range.setValues."
当我尝试将值数组写入工作表时,在我的Google Apps脚本中
in my Google Apps Script when I try to write an array of values to a sheet.
下面是代码的缩短(简化)版本.实际的代码遍历约10,000条记录.
Below is a shortened (simplified) version of code. The actual code runs through about 10,000 records.
调用setValues
时,在最后一行生成错误.
The error is generated in the last line, when the setValues
is called.
我知道我在这里缺少一些超级简单的东西.
I know I'm missing something super simple here.
function writeArrayToSheet() {
var ss = SpreadsheetApp.openById("Spreadsheet_ID");
var orderSheet = ss.getSheetByName("Sheet_Name");
var vTable = orderSheet.getRange(1,6,5,11).getValues(); //Raw data
var vWriteTable = []; //Data that will be written to sheet
var updateTime = new Date();
var i = 0;
var vSeconds = 0;
while (i < 5 && vTable[i][0] != "") {
//Logic section that calculated the number of seconds between
if (vSeconds == 0) {
vWriteTable.push("");
} else {
if (vTable[i][6] < certain logic) {
vWriteTable.push("Yes");
} else {
vWriteTable.push("");
}
}
i = i + 1;
} // End while
orderSheet.getRange(1,20,vWriteTable.length,1).setValues(vWriteTable);
} //End Function
这是vWriteTable
在调试时的外观:
推荐答案
getValues()
返回):
setValues
accepts(and getValues()
returns):
- 1个参数类型:
-
Object[][]
对象的二维数组
- 1 argument of type:
Object[][]
a two dimensional array of objects
不不接受一维数组.范围总是是二维的,无论范围的高度还是宽度.
It does NOT accept a 1 dimensional array. A range is always two dimensional, regardless of the range height or width.
如果A1:A2是范围,则对应的值数组将类似于:
If A1:A2 is the range, then corresponding values array would be like:
-
[[1],[3]]
类似地,A1:B1应该是
Similarly, A1:B1 would be
-
[[1,2]]
A1:B2应该是
-
[[1,2],[3,4]]
请注意,二维如何提供方向,并且始终是2D数组,即使范围的高度或宽度仅为1.
Notice how the two dimension provides direction and that it is always a 2D array, even if the height or width of the range is just 1.
推一个1D数组以使输出数组为2D.
Push a 1D array to make the output array 2D.
vWriteTable.push([""]);
这篇关于您如何解决“参数(number [])与SpreadsheetApp.Range.setValues的方法签名不匹配"的问题?错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!