【问题标题】:Cannot find method getRange(number,number)?找不到方法 getRange(number,number)?
【发布时间】:2018-12-31 12:16:16
【问题描述】:

我无法设置变量以将数字返回到谷歌表格中 K 列下的最后一行。代码在最后一行 .setValues(exampleText) 失败,我已经将 exampleText 定义为变量。

我使用了不同的方法来设置变量,包括为列设置变量。

我收到以下错误:

“找不到方法 getRange(number,number)。”

前三行是我之前尝试过的示例。

Column = 'K' 
range = ss.getRange(LastRow, Column)
range.setValue(exampleText)

var ss = SpreadsheetApp.getActiveSpreadsheet()

var column = 11

var lastRow = ss.getLastRow();

ss.getRange(lastRow, column)
.setValues(exampleText)

【问题讨论】:

  • getRange(row,column) 类型语法只接受数字而不是字符串。
  • 您需要查看方法签名。这些出现在自动完成弹出窗口中(在编辑器中编写代码时),并在参考文档网站上进行了详细说明(使用帮助菜单)。
  • 我已经编辑了我的代码以包含 column = 11 并将 k 替换为 column 但仍然不起作用。我不明白为什么? @TheMaster 我在发布之前已经检查了文档,但不知道如何继续。
  • 您可能希望找到给定列(在您的情况下为“K”)的最后一行带有数据。对吗?
  • 只有getRange(string) 可用于Spreadsheet(ss)。所以,你可以使用ss.getRange('Sheet1!A1:B4')getRange(number,number) 仅在工作表上可用。 ss.getActiveSheet().getRange(1,4)

标签: google-apps-script google-sheets


【解决方案1】:

问题:

  • getRange 是一种在 Spreadsheet 类和 Sheet 类上都可用的方法。

  • 但是,电子表格 (ss) 上只有 getRange(string) 可用。所以,你可以使用ss.getRange('Sheet1!A1:B4')

  • getRange(number,number) 仅在工作表上可用。所以,你可以使用ss.getActiveSheet().getRange(1,4)

  • Sheet 类也接受此方法的其他变体,但 Spreadsheet 类不接受,它只接受字符串作为唯一参数。

  • 有时,您也会收到

    异常:参数(字符串、数字、数字、数字)与 SpreadsheetApp.Spreadsheet.getRange 的方法签名不匹配

    第一个参数是字符串的原因是因为 JavaScript 引擎试图匹配实际的函数调用签名:getRange(string)。它将第一个数字转换为字符串,但它不知道如何处理其余参数(数字)。由于没有与 Spreadsheet 类上的调用(字符串、数字、数字、数字)匹配的方法签名,因此会引发错误。

解决办法:

如官方文档中所述,对预期的类使用正确的方法。在大多数情况下,您必须使用 Sheet 类。

SpreadsheetApp.getActive().getSheets()[0].getRange(1,1)

【讨论】:

    猜你喜欢
    • 2018-02-05
    • 2015-04-23
    • 1970-01-01
    • 2019-01-10
    • 2020-11-04
    • 2014-11-23
    • 2020-08-20
    • 2021-10-16
    相关资源
    最近更新 更多