已发布Google Sheets插件点击图片触发侧边栏遇权限拒绝错误求助
解决Google Sheets插件中点击表格图片触发PERMISSION_DENIED错误的问题
问题场景
已发布的Google Sheets插件通过代码实现:打开表格时插入图片,给图片绑定launchSidebar函数,点击图片启动侧边栏。开发者账号使用正常,但其他终端用户点击图片时触发错误:
Google Apps Script: We're sorry, a server error occurred while reading from storage. Error code PERMISSION_DENIED.
核心原因
表格内图片绑定的脚本函数默认以当前用户权限执行,但插件的私有脚本资源(如sidebar.html模板文件)对普通用户无直接访问权限。当用户点击图片调用launchSidebar时,系统无法读取插件的HTML资源,导致权限拒绝。
解决方法
1. 改用插件菜单作为触发入口(官方推荐)
这是最稳妥的方案,完全规避权限问题:
- 移除代码中
gridImage.assignScript('launchSidebar')这一行 - 给插入的图片添加提示说明,引导用户通过插件菜单启动侧边栏
- 修改后的
insertImage函数示例:
function insertImage() { try { const spreadSheet = SpreadsheetApp.getActive(); const sheet = spreadSheet.getSheets()[0]; const gridImage = sheet.insertImage("https://www.google.com/images/srpr/logo3w.png", 10, 1); gridImage.setNote("点击顶部菜单「插件」>「你的插件名称」>「Launch」打开侧边栏"); } catch (error) { Logger.log(error); } }
2. 检查并修正插件发布权限
确认插件发布时的权限配置,确保普通用户能访问插件资源:
- 打开Google Apps Script控制台,进入插件项目
- 点击「发布」>「部署为Google Workspace插件」
- 检查权限范围:根据需求设置为「域内所有用户」或「公开(任何人)」
- 确认OAuth作用域已正确声明,需包含:
https://www.googleapis.com/auth/spreadsheetshttps://www.googleapis.com/auth/script.container.ui
3. 改用可安装触发器(仅当必须保留图片交互时)
若一定要用图片触发,需通过可安装触发器完成授权流程:
- 将
launchSidebar函数标记为需要授权的函数,确保用户首次使用时完成OAuth授权 - 创建可安装的
onOpen触发器,替代原有简单触发逻辑,确保用户会话中权限生效 - 注意:这种方式仍存在权限限制,且需要用户手动完成授权,不推荐作为首选方案
内容的提问来源于stack exchange,提问作者Jayakrishnan
相关产品推荐
相关产品推荐

