我在工作表中的区域填充的单元格中有两个组合框。当第一个更改时,我构建一个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
*/

09-30 13:15