您如何解决“参数(数字 [])与 SpreadsheetApp.Range.setValues 的方法签名不匹配"的问题?错误 [英] How do you resolve a "The parameters (number[]) don't match the method signature for SpreadsheetApp.Range.setValues" error

查看:43
本文介绍了您如何解决“参数(数字 [])与 SpreadsheetApp.Range.setValues 的方法签名不匹配"的问题?错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到此错误:

参数 (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的样子:

推荐答案

setValues 接受(和 getValues() 返回):

  • 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]]

请注意二维如何提供方向,并且它始终是一个二维数组,即使范围的高度或宽度仅为 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.

压入一维数组使输出数组变为二维.

Push a 1D array to make the output array 2D.

vWriteTable.push([""]);

相关答案:

范围方法 getValues() 返回什么和 setValues() 接受吗?

这篇关于您如何解决“参数(数字 [])与 SpreadsheetApp.Range.setValues 的方法签名不匹配"的问题?错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆