google-apps-script - SpreadsheetApp.openById 上的脚本失败 - 需要权限
问题描述
我有一个在电子表格中创建自定义菜单的 onOpen 函数。它已经运行了一年多,但几天前它停止了工作。
当我查看执行记录时,我得到:
“执行失败:您无权调用 SpreadsheetApp.openById。所需权限:https ://www.googleapis.com/auth/spreadsheets ”
这失败/与以下代码行有关:
var ss = SpreadsheetApp.openById("myID")
我检查了启用了哪些 API,并启用了表格,这反映在 .json 文件中。我在脚本中的任何地方都没有@OnlyCurrentDoc。我已经为此脚本重置了帐户的权限,再次运行该功能并允许权限,但菜单仍然不会在打开时创建。
我的 .json 文件:
{
"timeZone": "Europe/London",
"dependencies": {
"enabledAdvancedServices": [{
"userSymbol": "Sheets",
"serviceId": "sheets",
"version": "v4"
}]
},
"exceptionLogging": "STACKDRIVER"
}
解决方案
发生此错误是因为代码没有足够的权限来运行该方法。该openById
方法需要一个或多个此范围。您的清单 .JSON 应如下所示:
{
"timeZone": "Europe/London",
"dependencies": {
"enabledAdvancedServices": [{
"userSymbol": "Sheets",
"serviceId": "sheets",
"version": "v4"
}]
},
"exceptionLogging": "STACKDRIVER",
"oauthScopes": [
"https://www.googleapis.com/auth/spreadsheets"
]
}
请注意我是如何在文件末尾添加范围的。请不要犹豫,要求对此答案进行更多说明。
推荐阅读
- android - PagingData 在 Paging 3 库中是否默认在后台线程上运行?
- node.js - 如何在 TypeORM 实体中指定 SQL Server 计算列?
- applescript - 苹果脚本新手
- ios - 列表部分标题的 SwiftUI 2 清除背景
- linux - 使用 ansible playbook 处理目标环境(dev/prod/systest)的 YUM 包安装部署
- ios - SwiftUI 旋转屏幕使模态不再自行消失
- html - CSS无法在主要内容中向下滚动
- javascript - getelementbyid 在 iframe 中加载页面
- r - 使用 mstate::msprep 的错误消息??错误?
- python-3.x - 如何为列表中小于整数的值绘制最佳拟合线?