如何让Google Apps Script库的所有使用者共用同一OAuth客户端
让所有Google Apps Script库使用者共用自定义OAuth客户端ID
核心思路
把库和所有使用者脚本都绑定到你自己创建的Google Cloud项目的OAuth客户端ID上,替代默认的自动生成客户端。
步骤1:给库脚本绑定自定义客户端ID
- 打开你的库脚本A,点右上角「项目设置」,勾选「显示"appsscript.json"清单文件」
- 打开appsscript.json,做两个修改:
- 把
oauthScopes改成你实际需要的权限(必须和Cloud客户端配置的权限范围完全匹配) - 添加
oauthClientId字段,填入你在Cloud项目里创建的客户端ID
示例配置:
{ "timeZone": "Asia/Shanghai", "dependencies": {}, "oauthScopes": [ "https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/drive" ], "oauthClientId": "你的客户端ID.apps.googleusercontent.com", "runtimeVersion": "V8" } - 把
- 保存后,库脚本就会使用这个自定义客户端了。
步骤2:配置使用者脚本/容器
对于绑定表格C的使用者脚本B,以及它的所有副本:
- 同样打开脚本B的「项目设置」,显示appsscript.json
- 确保
oauthScopes包含库A所需的全部权限(不能比库的权限少) - 同样添加
oauthClientId字段,填入同一个自定义客户端ID - 把配置好的表格C复制后,副本里的脚本B会自动保留这个配置,不用重复修改。
关键注意事项
- 你的Cloud项目里的OAuth同意屏幕必须处于发布状态(哪怕是内部测试),不然使用者会碰到授权失败的问题
- 所有脚本的权限范围必须和Cloud客户端中设置的一致,不能有额外的权限
- 如果使用者之前用过默认客户端授权,需要让他们重新授权:打开脚本编辑器,点「运行」>「授权」,会弹出你自定义客户端的同意屏幕,完成后旧授权会被替换
内容的提问来源于stack exchange,提问作者hackpoetic
相关产品推荐
相关产品推荐

