我正在从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范围的权限,我们将不胜感激。
答案 0 :(得分:11)
onEdit由简单触发器调用。
但是,简单触发器无法访问需要授权的服务,例如UrlFetchApp.fetch
。 See the Google Apps Script guide
您可以做的就是简单地将函数onEdit重命名为其他名称,例如atEdit,以删除简单的触发器。然后按照Current project's triggers
菜单...
并添加一个在发生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只是为了使其工作。事实证明,我可以通过以下方法使其起作用:
这可能是由于以前处理程序没有获取URL所致,因此它不必请求访问外部请求的授权。重新添加后,它便具有正确的授权,因为要求您重新授权处理程序。