如何解决SpreadsheetApp.getActive在Google表格插件的onOpen触发器中失败 参考文献:
我想阅读Active电子表格并基于此添加菜单项。以下是OnOpen(e)触发器中的代码:
function onOpen(e) {
var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName);
//add menus based on values of sheet
}
我正在接受以下例外:
[例外:您无权执行该操作。]
我经历了documentation,发现OnOpen触发器中的AuthMode为None,它不允许访问任何需要授权的服务。
请提出是否还有其他方法可以完成我的任务。
谢谢。
解决方法
除非电子表格的所有者或编辑者使用该电子表格中的加载项,否则无法访问该电子表格。如the official document所述,
但是,由于打开文档时,编辑器附加组件会自动运行其onOpen(e)函数来添加菜单项,因此上述行为会增加Apps Script的授权规则的复杂性。毕竟,用户每次打开文档时都会对附加组件访问个人数据感到不满意。
需要为文档启用插件,以便插件可以访问文档。启用后,onOpen()
在AuthMode.LIMITED
中运行,您可以在其中访问绑定的文档。此“启用”状态是由
在使用该文档时从商店获取加载项,或者 在该文档中使用先前安装的加载项
在所有其他情况下,请添加AuthMode.NONE
中的运行。在这种模式下,您只能添加菜单项,而不能访问任何数据,包括绑定的电子表格。添加菜单项以请求访问此类数据。然后,在获得AuthMode.FULL
之后,其余的工作流程就可以完成。
参考文献:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。