您无权调用“ UrlFetchApp.fetch”

时间:2019-10-12 23:25:46

标签: google-apps-script google-sheets

我正在从Google电子表格中的脚本编辑器发送http请求,但是我不断收到以下错误消息:

`Google Apps Script: You do not have permission to call UrlFetchApp.fetch. Required permissions: https://www.googleapis.com/auth/script.external_request`

我正在使用onEdit函数:

 function onEdit(e){
  var ui = SpreadsheetApp.getUi();
        var response = UrlFetchApp.fetch('http://www.eur-api.idomoo.com/');
    Logger.log(response.getContentText());
  } 

我不知道为什么会收到此错误?并且我还授予了script.external_request范围的权限,我们将不胜感激。

5 个答案:

答案 0 :(得分:11)

当用户更改电子表格中的值时,

onEdit由简单触发器调用。

但是,简单触发器无法访问需要授权的服务,例如UrlFetchApp.fetchSee the Google Apps Script guide

您可以做的就是简单地将函数onEdit重命名为其他名称,例如atEdit,以删除简单的触发器。然后按照Current project's triggers菜单...

enter image description here

并添加一个在发生On edit时要调用的触发器。

在创建触发器时,您将按照向导的要求授予您的应用脚本连接到外部服务的权限。

答案 1 :(得分:0)

您需要授权脚本访问external_request服务。如果您是项目的所有者,则应该可以通过运行oauth页面并进行确认来授予访问权限。

  

在此处了解有关身份验证的更多信息:https://developers.google.com/apps-script/guides/services/authorization

答案 2 :(得分:0)

尝试更改链接https。

查看他们的api文档:

API端点 Idomoo的API 2.0具有多个终结点,这些终结点从多个根目录之一开始,具体取决于您要将数据发送和处理到的地区:

美国https://usa-api.idomoo.com/api/v2 欧盟https://eur-api.idomoo.com/api/v2

答案 3 :(得分:0)

有两种解决方法

I。更新清单,并将行"https://www.googleapis.com/auth/script.external_request"添加到oauthScopes

{
  "timeZone": "Europe/Moscow",
  "oauthScopes": [
    ...
    "https://www.googleapis.com/auth/script.external_request"
  ],
  "dependencies": {
    ...
  },
  "exceptionLogging": "STACKDRIVER"
} 

II。或从清单中完全删除oauthScopes

您可以在Manifests

中找到如何清单。

答案 4 :(得分:0)

我知道它是一个旧线程,但是我发现不得不将方法重命名为其他东西很奇怪,例如从onEdit到onEditHandler只是为了使其工作。事实证明,我可以通过以下方法使其起作用:

  1. 删除触发器。
  2. 重新添加触发器。

这可能是由于以前处理程序没有获取URL所致,因此它不必请求访问外部请求的授权。重新添加后,它便具有正确的授权,因为要求您重新授权处理程序。