基于Google App Script创建Google Sheets宏及跨项目动态调用方案咨询
可行解决方案
- 方案1:现有插件内直接执行用户代码
直接在你的Google Sheets插件代码中通过eval()执行用户提交的App Script代码,无需额外创建独立脚本项目,天然共享插件所属的GCP项目权限,完全不需要额外绑定操作。
该方案适合对用户代码可信度较高的场景,你可以通过重写高危服务接口(如DriveApp、GmailApp等)的方式限制用户代码的可调用范围,规避安全风险。 - 方案2:复用预绑定GCP的通用脚本项目
提前创建1个和你的插件归属同一GCP项目的通用Apps Script项目,后续无需重复创建新项目:- 用户提交代码时,调用
projects.updateContent接口直接更新该通用项目的代码内容 - 调用
scripts.run接口执行对应函数即可
该方案完全规避了重复创建脚本项目、手动绑定GCP的操作,每次执行前清理上一次的代码内容即可避免不同用户的代码互相干扰。如果需要多用户隔离,可以提前创建多个预绑定GCP的脚本项目,使用时分配空闲项目即可。
- 用户提交代码时,调用
- 方案3:动态写入容器绑定脚本
如果用户提交的代码仅作用于当前打开的Google Sheets文件,可以直接调用Sheets API向当前文件写入容器绑定脚本内容,再通过插件内部的ScriptApp调用对应函数。容器绑定脚本的权限和当前用户会话一致,不需要额外进行GCP绑定操作。
内容的提问来源于stack exchange,提问作者Jayakrishnan
相关产品推荐
相关产品推荐

