SpreadsheetApp.getActive()在Google Sheets插件的onOpen触发器中失败



我想阅读Active电子表格并在此基础上添加菜单项。以下是OnOpen(e(触发器中的代码:

function onOpen(e) {
var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName);
//add menus based on values of sheet
}

我得到以下异常:

[异常:您没有执行该操作的权限。]

我浏览了文档,发现OnOpen触发器中的AuthMode为None,不允许访问任何需要授权的服务。

请建议是否有其他方法来完成我的任务。

谢谢。

除非电子表格的所有者或编辑器使用该电子表格中的插件,否则无法访问该电子表格。正如官方文件中所写,

但是,由于编辑器加载项在打开文档时会自动运行其onOpen(e(函数来添加菜单项,因此上述行为会给Apps Script的授权规则增加一些复杂性。毕竟,用户每次打开文档时都会对访问个人数据的附加组件感到不舒服

需要为文档启用加载项,加载项才能访问文档。启用后,onOpen()AuthMode.LIMITED中运行,您可以在其中访问绑定文档。这个";启用";状态是由引起的

在使用该文档时从商店获取加载项,或者使用该文档中以前安装的附加组件

在所有其他情况下,请在AuthMode.NONE中添加运行。在此模式下,您只能添加菜单项,而不能访问任何数据,包括绑定的电子表格。添加菜单项以请求访问此类数据。然后,在获得AuthMode.FULL之后,可以完成工作流的其余部分。

参考文献:

  • 完整的生命周期

最新更新