GAS - “您无权调用SpreadsheetApp.openById”

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

我的一个脚本使用SpreadsheetApp.openById(ID)从电子表格中获取数据。该脚本已被授予打开文件的权限,并且该脚本的用户对该文件具有写访问权限。但是,有时,脚本会返回以下错误:

You do not have permission to call SpreadsheetApp.openById. Required permissions: https://www.googleapis.com/auth/spreadsheets at [unknown function](Code:11)

其他时候,没有问题,脚本运行完美。有关如何解决此问题的任何想法/帮助?

脚本示例:

var spreadsheet = SpreadsheetApp.openById("1m65QVfk9Xx2zOwUxewdSjWCDK-g_jHj7ETFVFF0rjxY")

function myFunc() {
  sheet = spreadsheet.getActiveSheet()
  prepareHours()
  inputDisplays()
}
google-apps-script
1个回答
0
投票

您不能“授予脚本打开文件的权限”,因为脚本不是自治的:用户执行脚本。如果导致脚本执行的用户以不提供授权的方式执行此操作 - 例如执行名为onOpenonEdit的函数之类的简单触发器 - 那么任何需要授权的调用都将失败并且基于权限像你分享的错误。

由于为每个Apps Script实例评估全局变量,因此始终建议避免在全局范围内调用API / Service调用。此外,由于对具有编辑文档权限的任何用户执行简单触发器,因此建议避免在受限制的AuthModes的情况下使用需要用户权限的方法。

  • Simple Trigger Restrictions
  • Executing User
  • Accessible services 警告:运行onOpen(e)函数时,将加载整个脚本并执行任何全局语句。这些语句在与onOpen(e)相同的授权模式下执行,如果模式禁止它们则失败。这可以防止onOpen(e)运行。如果您发布的加载项无法添加其菜单项,请查看浏览器的JavaScript控制台以查看是否抛出了错误,然后检查您的脚本以查看onOpen(e)函数或全局变量是否调用AuthMode.NONE中不允许的服务。
  • AuthMode
© www.soinside.com 2019 - 2024. All rights reserved.