【发布时间】: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