Apps Script如何在onOpen简单触发器中检查OAuth权限并申请授权
Apps Script简单onOpen触发器检测OAuth授权状态方案
简单onOpen触发器运行在无授权沙箱上下文,确实无法调用需要OAuth权限的接口(比如Session.getActiveUser()、修改表格内容等),但可以通过用户级私有属性存储实现多用户独立的授权状态检测,完全规避权限限制。
具体实现步骤
- 读取用户私有授权标记
简单onOpen触发器内直接调用PropertiesService.getUserProperties().getProperty('isAuthorized'),该接口不需要额外OAuth权限,可在简单触发器上下文中正常运行,且每个用户的属性独立存储,互不干扰。 - 按需弹出授权提示
如果返回值为空或为false,直接调用SpreadsheetApp.getUi().alert()弹出提示,告知用户需要点击自定义菜单中的「初始化应用权限」选项完成授权即可正常使用所有功能。 - 授权完成后写入标记
在你已有的授权函数中,完成权限申请、可安装触发器部署后,新增一行代码PropertiesService.getUserProperties().setProperty('isAuthorized', 'true'),给当前用户打上已授权标记,后续打开表格时就不会重复弹出提示。
优化说明
该方案完美解决了之前用隐藏单元格只能适配第一个用户的问题,不需要识别用户身份、不需要读取用户邮箱,完全符合简单触发器的权限规则。如果需要支持用户重置授权状态,可在自定义菜单中新增「重置授权」选项,点击后调用PropertiesService.getUserProperties().deleteProperty('isAuthorized')即可。
内容的提问来源于stack exchange,提问作者Alex Libengood
相关产品推荐
相关产品推荐

