我在工作表中的区域填充的单元格中有两个组合框。当第一个更改时,我构建一个URL并调用:
var resp = UrlFetchApp.fetch(url, {"method": "get","muteHttpExceptions":false});
并且它填充控制第二组合框的第二范围。这在调试模式下工作正常。但是,我的目标是使用
onEdit
模式工作。如果第一个组合框被更改,该方法将运行并填充第二个组合框。使用此语句:mydoc.getActiveSheet().getRange(15, 1).setValue("Some debug message");
我将其放置在整个方法中,以查看其死于何处。我在
UrlFetchApp.fetch()
方法之后写了一条永远不会写的语句,所以我知道这就是问题所在。您可以在活动期间拨打这些类型的电话吗?再次,它可以通过脚本编辑器手动运行正常,但不能从
onEdit
调用时运行。我在他们不允许的位置看到了this question,但是该线程中的最后一条评论说他通过将另一个自定义方法附加到onEdit上使它起作用。我从另一种方法调用
URLFetchApp
,但尝试创建myOnEdit函数,并从那里调用URLFetchApp
,但仍然失败。不确定他手动附加到活动中意味着什么... 最佳答案
使用简单的触发器:
function onEdit(e) {
var response = UrlFetchApp.fetch('http://www.google.com/');
Logger.log(response.getContentText());
}
我收到以下错误(查看->执行记录):
Execution failed: You do not have permission to call fetch (line 2, file "Code") [0.008 seconds total runtime]
一种可能的解决方法是创建一个可安装的触发器:
function myOnEdit(e) {
var response = UrlFetchApp.fetch('http://www.google.com/');
Logger.log(response.getContentText());
}
/*
In the Spreadsheet, create new trigger:
Run: myOnEdit
Events: From spreadsheet
On edit
*/