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

Sheet AddOn在drive.file scope下如何跨用户访问其创建的文件?

解决方案:drive.file权限下跨用户访问插件创建的文件

核心原因

drive.file权限的核心限制是:插件仅能访问当前用户主动通过File Picker授权的文件,以及当前用户通过插件创建的文件。不同用户的插件实例权限相互独立,因此用户B无法直接访问用户A通过插件创建的文件——即便这些文件和共享Sheet关联。

可行解决方案

1. 共享文件夹统一授权(严格符合drive.file要求)

  • 提前创建一个共享文件夹,将所有使用插件的用户添加为成员(至少赋予编辑权限)。
  • 要求所有用户首次使用插件时,通过File Picker选择并授权访问该共享文件夹。
  • 插件将所有生成的文档统一存储到这个文件夹内。
  • 优化体验:利用PropertiesService存储用户的授权状态,避免重复触发授权弹窗。

2. 调整权限范围(需通过Google审核)

如果业务场景允许,可申请更宽泛的Drive权限:

  • https://www.googleapis.com/auth/drive.readonly:允许插件读取用户Drive内所有文件,需在OAuth consent screen中清晰说明用途以通过审核。
  • https://www.googleapis.com/auth/drive:完全访问权限,仅适合必要场景,审核标准严格。

3. 服务账号托管文件(适合团队内部受控环境)

  • 创建Google Cloud服务账号,为其分配Drive相关权限(如drive.file或drive)。
  • 插件通过服务账号身份创建和管理文件,所有文件的所有者为服务账号,而非单个用户。
  • 将服务账号名下的文件/文件夹共享给所有插件用户,确保他们具备访问权限。
  • 实现要点:在插件中集成OAuth2库完成服务账号身份验证,注意严格保护服务账号密钥不泄露。

4. Sheet属性存储文件ID+用户授权

  • 插件生成文件后,将文件ID存储到当前Sheet的DocumentProperties(文档属性)中,所有打开该Sheet的用户均可读取这些ID。
  • 用户使用插件时,需通过File Picker授权访问目标文件或其所在文件夹,插件即可根据存储的ID获取文件内容。
  • 缺点:用户需手动完成授权操作,体验略逊,但完全符合drive.file权限规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 03:27:21