我收到此错误:
"The parameters (number[]) don't match the method signature for SpreadsheetApp.Range.setValues."
当我尝试将一组值写入工作表时,在我的 Google Apps 脚本中。
下面是代码的缩短(简化)版本。实际代码运行了大约 10,000 条记录。
错误产生在最后一行,当
setValues
叫做。我知道我在这里错过了一些非常简单的东西。
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
调试时看起来像:最佳答案
setValues
接受(和 getValues()
返回):
Object[][]
两个对象的维数组 确实如此 不是 接受一维数组。范围是 总是 二维,无论范围高度或宽度 .
如果 A1:A2 是范围,则对应的值数组将类似于:
[[1],[3]]
同样,A1:B1 将是
[[1,2]]
A1:B2 将是
[[1,2],[3,4]]
请注意二维如何提供方向,并且它始终是一个二维数组,即使范围的高度或宽度仅为 1。
解决方案:
插入一维数组使输出数组成为二维数组。
片段:
vWriteTable.push([""]);
相关回答:What does the range method getValues() return and setValues() accept?
关于arrays - 您如何解决 "The parameters (number[]) don' t 与 SpreadsheetApp.Range.setValues 的方法签名匹配”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61115863/