You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google插件中Script Properties的跨用户/跨项目留存问题

Script Properties 凭据存储问题解答

首先明确核心:Script Properties 是绑定到具体 Google Workspace 项目(如 Sheet、Doc)的项目级存储——同一项目内的所有有权限用户共享这些属性,但不同项目、不同用户的插件实例之间完全隔离。

问题1解答

User2 下载同款插件后,会被要求录入自身凭据。
因为 User2 安装插件后,插件会关联到他自己的 Google Workspace 项目(比如他新建的表格),这个项目的 Script Properties 是空的,和 User1 的项目存储完全独立,所以会触发录入提示。

问题2解答

User1 在项目1中录入的凭据,在项目2中使用该插件时不可用,必须重新录入。
每个 Google Workspace 项目都有独立的 Script Properties 存储空间,插件在不同项目运行时,访问的是对应项目的属性数据,跨项目不共享任何存储内容。

补充代码优化建议

你的当前代码每次运行都会强制弹出录入框覆盖原有凭据,建议增加判断逻辑,仅在凭据为空时才触发录入:

let properties = PropertiesService.getScriptProperties();
let username = properties.getProperty('username');
let password = properties.getProperty('password');
const ui = SpreadsheetApp.getUi(); // 补充ui初始化,原代码可能遗漏

// 仅当凭据缺失时才弹出录入框
if (!username || !password) {
  const usernamePrompt = ui.prompt("User Credentials", "Enter username", ui.ButtonSet.OK_CANCEL);
  username = usernamePrompt.getResponseText();

  const passPrompt = ui.prompt("User Credentials", "Enter Password", ui.ButtonSet.OK_CANCEL);
  password = passPrompt.getResponseText();

  properties.setProperty('username', username);
  properties.setProperty('password', password);
}

内容的提问来源于stack exchange,提问作者Gaijin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 19:33:16