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

时间:2019-03-21 10:24:04

标签: google-apps-script

我的一个脚本使用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()
}

1 个答案:

答案 0 :(得分:0)

您不能“授予脚本打开文件的权限”,因为脚本不是自主的:用户执行脚本。如果导致脚本执行的用户以不提供任何授权的方式执行该操作(例如执行名为onOpenonEdit的函数之类的简单触发器),则所有调用< strong> require 授权将失败,并出现基于权限的错误,如您共享的错误。

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

  • Simple Trigger Restrictions
  • Executing User
  • Accessible services

      

    警告:运行onOpen(e)函数时,将加载整个脚本并执行所有全局语句。这些语句在与onOpen(e)相同的授权模式下执行,并且在该模式禁止的情况下失败。这样可以防止onOpen(e)运行。如果您发布的加载项无法添加其菜单项,请查看浏览器的JavaScript控制台以查看是否引发了错误,然后检查脚本以查看onOpen(e)函数或全局变量是否调用了不属于该服务的服务AuthMode.NONE中允许。

  • AuthMode