如何在Properties中存储Google Workspace Gmail插件的企业组织级配置值
域级共享配置实现方案
你之前使用的PropertiesService.getUserProperties()属于用户级独立存储,天然隔离不同用户的数据,无法实现跨用户共享配置。以下是两种适配Google Workspace场景的可行方案:
方案1:脚本属性(推荐,轻量场景)
PropertiesService提供的getScriptProperties()是绑定到整个Apps Script项目的存储,只要配置好项目权限即可实现域内共享:
- 操作步骤:
- 由域管理员作为脚本所有者,执行配置写入操作,仅需执行一次即可:
const scriptProperties = PropertiesService.getScriptProperties(); scriptProperties.setProperty('licenseKey', '[你的许可证密钥]');- 打开Apps Script项目的共享设置,将查看权限修改为「你的域内所有用户可查看」
- 所有插件用户读取配置的通用代码:
const scriptProperties = PropertiesService.getScriptProperties(); const licenseKey = scriptProperties.getProperty('licenseKey'); - 优势:无需额外依赖,配置读取速度快,开发成本极低
- 注意:所有域内能查看脚本的用户都可以访问配置值,不适合存储极高敏感信息
方案2:共享表格存储(适合敏感配置场景)
如果配置信息敏感度较高,不希望用户直接通过脚本源码读取到配置,可以用加密的共享表格作为存储介质:
- 操作步骤:
- 域管理员新建Google Sheets,按照「配置键、配置值」的格式填写全局配置,将表格的查看权限设置为「域内所有用户可查看」,不要开放编辑权限
- 在脚本中编写管理员专属的配置写入函数,仅管理员账号有权限执行修改
- 普通用户侧的读取逻辑可以增加简单的加密解密步骤,避免配置值直接明文暴露
- 读取配置的示例代码:
function getGlobalConfig(configKey) { // 替换为你的配置表格ID const sheet = SpreadsheetApp.openById('xxxxxxxxx').getSheetByName('config'); const allConfigs = sheet.getDataRange().getValues(); for (let row of allConfigs) { if (row[0] === configKey) { // 若有加密这里增加解密逻辑 return row[1]; } } return null; } - 优势:配置权限隔离更严格,支持存储敏感信息,可随时在表格中修改配置无需更新脚本
内容的提问来源于stack exchange,提问作者Joe Ceriani
相关产品推荐
相关产品推荐

