【问题标题】:How do I get the managers/contributors/etc of a Google Team Drive?如何获取 Google 团队云端硬盘的经理/贡献者/等?
【发布时间】:2019-06-08 22:15:43
【问题描述】:

团队云端硬盘有五个权限级别:

  • 经理
  • 内容管理器
  • 贡献者
  • 评论
  • 查看者

另一方面,Folder API 只有三个函数用于获取文件夹中人员的用户列表:

  • getEditors()
  • getOwner()
  • getViewers()

如果您使用的是“我的云端硬盘”,这可以正常工作,因为它具有完全相同的三个级别:

  • 是所有者
  • 可以组织、添加和编辑
  • 只能查看

如何获得 Google 团队云端硬盘中的 5 个访问级别?如果我确实调用了这 3 个函数,它们对应于团队云端硬盘上的哪个访问级别? (例如,getEditors 是否返回 Manager 组中的每个人?)

我看到有一个 Permission 枚举具有我正在寻找的确切 5 个权限:

  • VIEW
  • EDIT
  • COMMENT
  • OWNER
  • ORGANIZER

...我可以调用getAccess() 来获取给定Useremail 的访问级别。问题是我不知道将哪个emails 传递给函数。

如何获取 5 个类别中的任何一个类别的人员列表(例如 Content Manager)?或者我如何获取 Team Drive 上所有人员的列表(例如,这样我就知道哪些电子邮件与 getAccess() 一起使用)?

【问题讨论】:

    标签: google-apps-script google-drive-api google-drive-shared-drive


    【解决方案1】:

    以下是 Team Drive UI 中提供的权限、相应的 getAccess() 值以及您可以调用的包含该人的文件夹 API 方法之间的映射摘要:

    +-----------------------+-------------+-------------------+
    | Team Drive Permission | getAccess() | Folder API Method |
    +-----------------------+-------------+-------------------+
    | Manager               | ORGANIZER   | (None)            |
    | Content Manager       | NONE        | (None)            |
    | Contributor           | EDIT        | getEditors()      |
    | Commenter             | COMMENT     | getViewers()      |
    | Viewer                | VIEW        | getViewers()      |
    | (None)                | NONE        | (None)            |
    +-----------------------+-------------+-------------------+
    

    一些结果:

    • 无法知道谁是 Team Drive 上的内容管理员:请注意它如何为 内容管理员和不在团队驱动器。因此,即使您知道此人的电子邮件地址,也无法使用getAccess() 方法知道谁是 Team Drive 上的内容管理员。这可能是 API 中的错误?
    • 您可以轻松获取所有贡献者:只需调用getEditors() 方法即可。
    • 您可以获取所有评论者和查看者,但也需要使用getAccess():由于评论者和查看者都是通过getViewers 返回的,因此您需要将其与 getAccess 中返回的结果进行交叉引用() 来查找实际的评论者或查看者。
    • 没有获取 Manager 或 Content Manager 的 API 方法:返回文件夹上一组用户的标准 API 方法都不会返回 Manager 或 Content Manager 组中的任何人。因此,您需要知道经理的电子邮件地址,并且只能使用 getAccess() 来验证他们确实是经理。
    • getOwner() 总是返回 null。这大概是因为团队云端硬盘上没有单一所有者。即使您正好有 1 个经理和 0 个内容经理,它也会返回 null

    因此,似乎没有办法在 Team Drive 上找到 OWNERs 或 ORGANIZERs(大概是 ManagersContent Managers,分别)使用标准 API。相反,您必须已经知道与用户关联的电子邮件地址是什么,并致电getAccess()。这很不幸。

    我期待以下解决方法可行:

    • 在团队云端硬盘中创建一个虚拟文件。由于团队云端硬盘中的 文件 权限正好映射为 EditCommentView,因此 getEditors() 方法应该现在公开管理器和内容管理器。由于他们拥有文件的编辑权限,因此他们应该由getEditors() 方法返回。

    不幸的是,这也不起作用。结果与 文件夹 的情况完全相同。 Manager 和 Content Manager 被隐藏(即 3 种方法都没有返回它们)。内容管理器的 getAccess() 仍然是 NONE,等等。


    要获得经理和内容经理的列表,我相信唯一的选择是使用高级 API。特别是,Permissions 对象上的 teamDrivePermissionDetails[].role 看起来正好返回映射到团队云端硬盘权限的 5 个状态:

    • 组织者
    • 文件管理器
    • 作家
    • 评论者
    • 读者

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 2019-05-08
      • 1970-01-01
      • 2017-09-21
      • 2019-02-28
      相关资源
      最近更新 更多