Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 您如何解决“问题”;参数(编号[])不';t与SpreadsheetApp.Range.setValues的方法签名不匹配“;错误_Arrays_Google Apps Script_Google Sheets - Fatal编程技术网

Arrays 您如何解决“问题”;参数(编号[])不';t与SpreadsheetApp.Range.setValues的方法签名不匹配“;错误

Arrays 您如何解决“问题”;参数(编号[])不';t与SpreadsheetApp.Range.setValues的方法签名不匹配“;错误,arrays,google-apps-script,google-sheets,Arrays,Google Apps Script,Google Sheets,我得到这个错误: “参数(编号[])与SpreadsheetApp.Range.setValues的方法签名不匹配。” 在我的谷歌应用程序脚本中,当我尝试将一组值写入一张工作表时 下面是代码的缩短(简化)版本。实际代码通过大约10000条记录运行 调用setValues时,在最后一行生成错误 我知道我错过了一些非常简单的东西 function writeArrayToSheet() { var ss = SpreadsheetApp.openById("Spreadsheet_ID");

我得到这个错误:

“参数(编号[])与SpreadsheetApp.Range.setValues的方法签名不匹配。”

在我的谷歌应用程序脚本中,当我尝试将一组值写入一张工作表时

下面是代码的缩短(简化)版本。实际代码通过大约10000条记录运行

调用
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
函数writearraytoseet(){
var ss=电子表格应用程序openById(“电子表格ID”);
var orderSheet=ss.getSheetByName(“工作表名称”);
var vTable=orderSheet.getRange(1,6,5,11).getValues();//原始数据
var vWriteTable=[];//将写入工作表的数据
var updateTime=新日期();
var i=0;
var vSeconds=0;
而(i<5&&vTable[i][0]!=“”){
//逻辑部分,用于计算
如果(vSeconds==0){
vWriteTable.push(“”);
}否则{
if(vTable[i][6]<特定逻辑){
vWriteTable.push(“是”);
}否则{
vWriteTable.push(“”);
}      
}        
i=i+1;
}//结束时
orderSheet.getRange(1,20,vWriteTable.length,1).setValues(vWriteTable);
}//结束函数
这就是调试时
vWriteTable
的外观:

接受(并返回):

  • 1类型的参数:
  • Object[][]
    a二维对象数组
它不接受一维数组。无论范围的高度或宽度如何,范围始终是二维的

如果A1:A2是范围,则对应的数组值如下:

  • [[1],[3]]
类似地,A1:B1将是

  • [[1,2]]
A1:B2应该是

  • [[1,2],[3,4]
请注意二维如何提供方向,并且它始终是二维数组,即使范围的高度或宽度仅为1

解决方案: 按1D数组使输出数组为2D

片段: 相关答复: 接受(并返回):

  • 1类型的参数:
  • Object[][]
    a二维对象数组
它不接受一维数组。无论范围的高度或宽度如何,范围始终是二维的

如果A1:A2是范围,则对应的数组值如下:

  • [[1],[3]]
类似地,A1:B1将是

  • [[1,2]]
A1:B2应该是

  • [[1,2],[3,4]
请注意二维如何提供方向,并且它始终是二维数组,即使范围的高度或宽度仅为1

解决方案: 按1D数组使输出数组为2D

片段: 相关答复:

是否有人可以编辑此答案以提供实际解决方案?我不知道该如何处理该代码段。@user8118328该代码段的意思是,每次推送时,它都必须是一个2D数组。因此,如果要构建的阵列是1D的,则需要添加额外的方括号以使其成为2D。当应用于原始问题时,这意味着您将替换以下代码行,如下所示:vWriteTable.push(“”;-->vWriteTable.push([“”]);和vWriteTable.push(“是”);-->vWriteTable.push([“是]);对于动态值=>var yourVariable=;=>vWriteTable.push([yourVariable]);(而不仅仅是vWriteTable.push(yourVariable);)有人可以编辑这个答案来提供实际的解决方案吗?我不知道该如何处理该代码段。@user8118328该代码段的意思是,每次推送时,它都必须是一个2D数组。因此,如果要构建的阵列是1D的,则需要添加额外的方括号以使其成为2D。当应用于原始问题时,这意味着您将替换以下代码行,如下所示:vWriteTable.push(“”;-->vWriteTable.push([“”]);和vWriteTable.push(“是”);-->vWriteTable.push([“是]);对于动态值=>var yourVariable=;=>vWriteTable.push([yourVariable]);(而不仅仅是vWriteTable.push(您的变量);)
vWriteTable.push([""]);