【问题标题】:Apps Script error: Cannot find method getRange(number,number,number,number)Apps 脚本错误:找不到方法 getRange(number,number,number,number)
【发布时间】:2015-04-23 21:29:13
【问题描述】:

我看到有些人过去曾遇到过类似的问题,但他们似乎只是不同而已,因此解决方案也会有所不同。所以这里是:

我正在尝试在 Google Apps 脚本中返回一系列已知大小的表格,如下所示:

var myRange = ss.getRange(2,1,14,4);

但是,我收到如下错误:

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

请注意,使用 a1notation,如下所示,效果很好:

var myRange = ss.getRange("A2:D15");

getRange function 有几种排列方式

  • getRange(int, int)
    • 从整数的坐标返回一个范围
  • getRange(int, int, int)
    • 从与最后一个参数一样多的行的前 2 个参数的坐标返回一个范围
  • getRange(int, int, int, int)
    • 从前 2 个参数的坐标返回一个范围,其中行数与第三个参数一样多,列数与最后一个参数一样多
  • getRange(字符串)
    • 返回由a1notation中的字符串指定的范围(即“A2:D15”,这与从第2行第1列到第15行第4列的所有内容相同)

我尝试过使用所有不同的排列(使用硬编码数字),但只有 a1notation 一种有效。有什么想法吗?

【问题讨论】:

  • 哼,我的脚本使用“getRange(int, int, int, int)”,但我没有问题...你确定你拿的是好数字吗?
  • 这可能是因为您的位置设置吗?您可以尝试使用分号作为分隔符,而不是仅仅为了微笑而使用逗号。
  • 看看 var ss 是如何定义的会很有用。也许它只是查看活动的电子表格,而不是其中的工作表。
  • 即使使用 A1 表示法不会导致错误,它仍然不起作用。您的代码没有返回范围。电子表格中可以有多个工作表。文档是错误的。它不应该显示在电子表格类上获取范围的方法。获取范围仅适用于工作表类。
  • @SandyGood 同意桑迪! Apps 脚本文档是完全错误的。我今天遇到了同样的问题。您必须在“工作表”而不是“电子表格”上使用 getRange()。我不知道为什么符号方式有效。

标签: google-apps-script google-sheets


【解决方案1】:

正如我在评论中提到的,我很想看看您是如何在代码中构建 ss 变量的。

您可能指向的是电子表格,而不是该电子表格中的工作表。

我整理了一个简单的 getRange 示例。这很有效,它会将范围内的列数和行数记录到 Logger。

如您所见,ss 变量用于电子表格,sheet 变量用于电子表格本身的工作表。

function getSomeRange(){

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();

  var myRange = sheet.getRange(2,1,14,4);

  Logger.log("Number of rows in range is "+myRange.getNumRows()+ " Number of columns in range is "+ myRange.getNumColumns());

}

【讨论】:

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