Google apps script Sheet.getRange在不使用A1表示法时引发签名不匹配异常
我正在谷歌地图上写一个脚本,它将与谷歌地图的地理编码服务进行交互 下面的代码工作正常Google apps script Sheet.getRange在不使用A1表示法时引发签名不匹配异常,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正在谷歌地图上写一个脚本,它将与谷歌地图的地理编码服务进行交互 下面的代码工作正常 var ss = SpreadsheetApp.getActiveSpreadsheet(); var header_v = ss.getRange("1:1").getValues(); 但是,稍后在我的函数中,我使用Sheet.getRange(number,number,number,number)方法再次调用Sheet.getRange(): var target_range = ss.getRang
var ss = SpreadsheetApp.getActiveSpreadsheet();
var header_v = ss.getRange("1:1").getValues();
但是,稍后在我的函数中,我使用Sheet.getRange(number,number,number,number)
方法再次调用Sheet.getRange()
:
var target_range = ss.getRange(1, ss.getLastColumn()+1, ss.getLastRow(), 10);
引发以下异常:
Exception: The parameters (String,number,number,number) don't match the method signature for Spreadsheet.getRange.
我试着用一个我知道是数字的变量替换第一个参数,效果也是一样的
这是当前状态下的函数
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());
}
我自己解决了这个问题
var ss = SpreadsheetApp.getActiveSpreadsheet();
返回电子表格
,但是getRange(number,number,number,number)
是工作表
类的成员
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
解决了我的问题。getRange也是电子表格类的一种方法,但具有不同的签名。谢谢!这真是太棒了O我想知道他们究竟为什么在两个类中都保留getRange()方法,而不始终保持它们之间的同步?@Magne从文件级调用
getRange()
,与从工作表级调用相比,是一种非常不同的操作。从文件级调用getRange()
时,必须指定工作表。如果应用程序本身随机选择一张工作表进行操作,那将是荒谬的。因此,这两个函数无法保持同步,因为它们在不同的上下文中运行。我希望谷歌方面的一个改进是在通用错误消息中添加一个指针,以帮助编码人员识别问题:这不是语法问题,而是上下文问题。