不使用 A1 表示法时 Sheet.getRange 抛出签名不匹配异常

Ben*_*dur 12 google-sheets google-apps-script

我正在 Google Sheet 上编写一个脚本,该脚本将与 Google Map 的地理编码服务进行交互。

以下代码工作正常。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var header_v = ss.getRange("1:1").getValues();
Run Code Online (Sandbox Code Playgroud)

但是,稍后在我的函数中,我Sheet.getRange()再次使用该Sheet.getRange(number, number, number, number)方法调用:

var target_range = ss.getRange(1, ss.getLastColumn()+1, ss.getLastRow(), 10);
Run Code Online (Sandbox Code Playgroud)

抛出以下异常:

Exception: The parameters (String,number,number,number) don't match the method signature for Spreadsheet.getRange.
Run Code Online (Sandbox Code Playgroud)

我尝试用我知道是数字的变量替换第一个参数,以达到相同的效果。

这是当前状态下的函数。

function geocode() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var header_v = ss.getRange("1:1").getValues();

  var col_indxs = {
    name : header_v[0].indexOf("restaurant_name"),
    address : header_v[0].indexOf("address")
  }

  var target_range = ss.getRange(1, ss.getLastColumn()+1, ss.getLastRow(), 10);
  Logger.log(target_range.getA1Notation());
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*dur 30

自己解决了这个问题。

var ss = SpreadsheetApp.getActiveSpreadsheet();
Run Code Online (Sandbox Code Playgroud)

返回 a Spreadsheet,但是它getRange(number, number, number, number)Sheet类的成员。

var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
Run Code Online (Sandbox Code Playgroud)

解决了我的问题。

  • 谢谢!这真是个陷阱!:O我想知道为什么他们会在两个类中保留 getRange() 方法而不始终保持它们彼此同步? (4认同)
  • getRange 也是电子表格类的方法,但具有不同的签名。 (2认同)
  • 我希望谷歌方面看到的一项改进是通用错误消息中的指针,以帮助编码人员识别问题:这不是语法问题,而是上下文问题。 (2认同)