google-apps-script - GAS - “您无权调用 SpreadsheetApp.openById”
问题描述
我的一个脚本用于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()
}
解决方案
您不能“授予脚本打开文件的权限”,因为脚本不是自主的:用户执行脚本。如果导致脚本执行的用户以不提供授权的方式执行此操作——例如执行一个简单的触发器,如名为onOpen
或的函数onEdit
——那么任何需要授权的调用都将失败,并出现基于权限的错误,例如你分享的那个。
由于针对每个 Apps 脚本实例评估全局变量,因此始终建议避免在全局范围内调用 API / 服务调用。此外,由于简单触发器对任何有权编辑文档的用户执行,因此建议避免在具有受限AuthMode
s 的情况下使用需要用户权限的方法。
推荐阅读
- node.js - 注销后保持 node.js express 运行
- elasticsearch - 如何设置索引模式以支持零售应用程序
- lua - 将特定文件分配给脚本中的任何团队
- python - 遍历目录/子目录的目录,仅打印子目录名称
- javascript - 为什么在给定线性三次贝塞尔曲线时 p5.js bezierPoint() 函数会返回非线性值?
- php - 无法删除数据 laravel 8
- c# - ViewModel 中 Reference 对象的所有 ID 为 0 而 Post 方法
- javascript - 如何在javascript中检索家谱中嵌套子节点的每个节点?
- excel - Excel 唯一排名公式的反例 - 知道如何解决吗?
- python - Python替换双引号读取文件