【问题标题】:Is there a way to share a json file (or blob) for all GMail add-ons in the same GSuite domain?有没有办法为同一个 GSuite 域中的所有 GMail 插件共享一个 json 文件(或 blob)?
【发布时间】:2021-10-29 05:23:41
【问题描述】:

我目前有一个 GMail 插件,它被至少 3 个不同的 GSuite 域使用。目前,该 GMail 插件的每个实例都通过 HTTP-POST 请求向我们的服务器查询其配置数据。

但是随着来自不同 GSuite 域的新用户的涌入,我目前正在研究一种方法,让同一域中的用户共享配置 (JSON) 文件或 blob。

我想知道是否可以为此使用 Google 云端硬盘。我最大的问题是是否有一个“目录”或“url”我可以“硬编码”并让我的附加访问(只读)?例如“https://drive.google.com/drive/folders/myuniquepath/addon-config.json”,其中“https://drive.google.com/drive/folders/”是硬编码的。 “myuniquepath/addon-config.json”是我将添加到我的驱动器中的东西。

如果 google drive 解决方案不可行,appscript 或 GMail Add-ons 中是否有类似chrome.storage API 的机制?管理员可以使用管理仪表板设置 blob,然后域中的所有用户都可以“拉”这些配置数据。

谢谢。

【问题讨论】:

  • 我认为域管理员需要创建一个共享文件夹并将该文件夹 ID 提供给插件。并且插件需要能够访问共享文件夹。我认为您的代码可以做到这一点的唯一方法是使用 Advanced Drive Service 或 Drive API 以及 Drive.Files.insert(resource,undefined,{ supportsAllDrives: true });//supportsAllDrives is so that it will work on shared //drives 的特殊设置
  • @AlanWells 感谢您的快速回复。有什么办法可以硬编码这个ID?我真的很希望管理员不必为插件“设置”任何东西。因此,在管理员准备好配置 blob 之后,在域中安装时“它会正常工作”。
  • 只有发布插件的账户才能硬编码。你的代码是开源的吗?如果您的插件代码是开源的,并且每个域都在获取您的代码副本并自己发布插件,那么他们可以对其进行硬编码。您也许可以在插件中使用库,然后您可以编辑库而无需重新发布插件。但即便如此,安装插件的帐户也无法编辑代码并保存项目。
  • 当插件运行时,它就像从安装它的帐户运行一样运行。因此,插件无法直接访问您的 Google Drive,并创建一个与安装插件的帐户共享的文件夹。您仍然需要使用 UrlFetchApp.fetch(url) 从插件向您帐户中的 Apps 脚本项目发出外部请求,然后该 Apps 脚本项目需要知道在哪里访问特定域的数据,并且然后将数据发送回插件。因此,您仍然会发出外部请求。

标签: google-apps-script gmail-api


【解决方案1】:

您可能想尝试获取活动用户的电子邮件,并获取域。根据您获得的域访问数据。

var email = Session.getActiveUser().getEmail();
var domain = email.split('@').pop();
if(domain == "yahoo.com") {
  //access the data for yahoo.com domains
}
else if(domain == "google.com") {
  //access the data for google.com domains
}

注意:

  • 只需确保来自特定域的用户在访问该特定域的数据时具有所需的访问权限/权限。

【讨论】:

    猜你喜欢
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 2021-02-20
    • 1970-01-01
    相关资源
    最近更新 更多