【问题标题】:onOpen() not working - getting permissions erroronOpen() 不工作 - 获取权限错误
【发布时间】:2021-04-10 20:29:14
【问题描述】:

我在容器绑定到 Google 表格文件的 Google Apps 脚本顶部有代码:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Payroll')
    .addItem('Add shoot days', 'copyCallSheets')
    .addItem('Update Call Sheet/Crew List', 'updateDocs')
    .addItem('Create Daily Time Sheet', 'sendDailyTimeSheets')
    .addItem('Collect Out Times from DTS', 'collectOuttimez')
    .addItem('Process Timecards', 'processTimecardz')
    .addSeparator()
    .addItem('Report Issue', 'sendErrorReport')
    .addToUi();
}

但是,当我打开文件时,onOpen() 简单触发器失败,并且我收到以下错误消息:

例外:您无权调用 DriveApp.getFileById。所需权限:(https://www.googleapis.com/auth/drive.readonly || https://www.googleapis.com/auth/drive) 功能未知

如果我通过在脚本中手动执行它们来调用它们,我在菜单中调用的任何函数都可以正常工作,但我希望能够让用户从 UI 调用它们。

这是错误的截图:

【问题讨论】:

  • 请添加minimal reproducible example。附言onOpen 函数没有失败,错误来自使用 DriveApp 的语句。你在使用全局变量吗?您的项目使用的是默认 GCP 项目还是标准 GCP 项目?
  • 您的脚本是否绑定到 GCP 项目?如果您查看appsscript.json 文件,您是否有任何oauth2scopes?
  • 我正在使用全局变量...我没有对 GCP 做过任何事情,所以我假设它使用的是默认值?我不确定如何访问 appscript.json 文件?
  • 我不确定你所说的“全局变量”是什么意思,或者至少,为什么它在这里相关。您应该阅读更多关于 GCP 项目以及它们如何与 Apps 脚本项目联系的内容here
  • 谢谢,@RafaGuillermo。全局变量评论是对 Rubén 的问题的回应。阅读您发送的文档,我使用的是默认 GCP 项目。根据该文档,没有看到我需要使用标准 GCP 项目的任何理由,但也许我遗漏了一些东西

标签: google-apps-script google-sheets


【解决方案1】:

简单的触发器无法执行需要权限的功能

Simple Trigger Restrictions

【讨论】:

  • 谢谢@Copper。从我的代码中可以看出,onOpen() 函数没有执行任何需要权限的函数。它只是在 UI 中创建一个菜单
  • 也许你在某个地方还有另一个 onOpen()。
  • 不,只有一个。
【解决方案2】:

能够通过创建一个可安装的触发器来使其工作。然而,仍然不确定为什么它停止作为一个简单的触发器工作(它工作了一段时间)。

【讨论】:

    猜你喜欢
    • 2018-08-26
    • 1970-01-01
    • 2019-06-03
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 2015-02-02
    相关资源
    最近更新 更多