我的一个脚本使用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()
}
答案 0 :(得分:0)
您不能“授予脚本打开文件的权限”,因为脚本不是自主的:用户执行脚本。如果导致脚本执行的用户以不提供任何授权的方式执行该操作(例如执行名为onOpen
或onEdit
的函数之类的简单触发器),则所有调用< strong> require 授权将失败,并出现基于权限的错误,如您共享的错误。
由于会为每个Apps脚本实例评估全局变量,因此始终建议避免在全局范围内调用API /服务调用。另外,由于对拥有编辑文档权限的任何用户执行简单的触发器,因此建议避免在AuthMode
受限的情况下使用需要用户权限的方法。
警告:运行
onOpen(e)
函数时,将加载整个脚本并执行所有全局语句。这些语句在与onOpen(e)
相同的授权模式下执行,并且在该模式禁止的情况下失败。这样可以防止onOpen(e)
运行。如果您发布的加载项无法添加其菜单项,请查看浏览器的JavaScript控制台以查看是否引发了错误,然后检查脚本以查看onOpen(e)
函数或全局变量是否调用了不属于该服务的服务AuthMode.NONE
中允许。