为什么应用脚本执行仅在Google Spreadsheet上的onEdit事件触发的情况下才会失败

问题描述 投票:1回答:1

我正在使用Google Apps脚本。我有我编写的应用脚本,应该由特定工作表上的onEdit事件执行。

onEdit.gs

function onEdit(e) {
    var syokuninIchiran = new SyokuninIchiran();
    syokuninIchiran.syncTable();
}

通过在页面上进行编辑执行上述操作时,会发生此错误:

You do not have permission to call openById. Required privilege: https://www.googleapis.com/auth/spreadsheets

但是,当从Google Apps脚本开发窗口触发脚本时,它没有问题。我通过使测试函数如下来调用相同的代码:

function test(){
  var syokuninIchiran = new SyokuninIchiran();
  syokuninIchiran.syncTable();
}

此问题可能有问题吗?电子表格的所有者不是我的。我的帐户有权编辑,如下图所示。

enter image description here

Try1:我试图将范围手动添加到清单文件(appsscript.json)。并且我批准了授权。但是,什么都没有改变。它仍然具有相同的错误消息。

{
  "oauthScopes": [
    "https://www.googleapis.com/auth/sqlservice",
    "https://www.googleapis.com/auth/spreadsheets",
    "https://www.googleapis.com/auth/script.external_request"
    ]
}
google-apps-script google-sheets-api
1个回答
2
投票

答案:

简单触发器无法打开与其绑定的文件以外的文件。为此,您需要使用可安装的触发器。

更多信息:

根据Simple Trigger restrictions上的文档:

由于简单触发器会自动触发,而无需征求用户授权,因此它们受到一些限制:

他们可以修改绑定到的文件,但不能访问其他文件,因为这需要授权。

因此必须使用可安装的触发器。

设置可安装触发器:

跟随Edit > Current project's triggers菜单项,它将在G Suite开发人员中心中打开一个新页面。单击右下角的+ Add Trigger按钮并按如下所示设置触发设置:

  • 选择要运行的功能:onEdit
  • 选择运行哪个部署:Head
  • 选择事件源:From Spreadsheet
  • 选择基于时间的触发类型:On Edit

然后按保存。这将增加编辑触发器的功能范围。

希望对您有帮助!

参考:

© www.soinside.com 2019 - 2024. All rights reserved.