如何获得Google Team Drive的经理/贡献者/等等?

时间:2019-01-14 21:52:32

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

Team Drive具有五个权限级别:

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

另一方面,Folder API仅具有三个用于获取文件夹中用户列表的功能:

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

如果您使用的是“我的云端硬盘”,则此方法很好,因为它具有完全相同的三个级别:

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

如何获得Google Team Drive中5个访问级别中的每个级别?如果我确实调用了这三个功能,那么它们在Team Drive上对应于哪个访问级别? (例如,getEditors返回Manager组中的每个人吗?)

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

  • VIEW
  • EDIT
  • COMMENT
  • OWNER
  • ORGANIZER

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

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

1 个答案:

答案 0 :(得分:1)

以下是在Team Drive UI中给定的权限,相应的getAccess()值以及您可以调用的包含该人的Folder 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上的内容管理器:请注意,它如何为 Content Manager 和其他人返回NONE不在团队驱动器上。因此,即使您知道对方的电子邮件地址,也无法使用getAccess()方法来了解谁是Team Drive上的内容管理员。这可能是API中的错误吗?
  • 您可以轻松获取所有贡献者:只需调用getEditors()方法。
  • 您可以获取所有评论者和查看者,但也需要使用getAccess() :由于评论者和查看者都是通过getViewers返回的,因此您需要交叉引用对照getAccess()返回的结果来查找实际的Commenters或Viewers。
  • 没有获取Manager或Content Manager的API方法:返回文件夹上一组用户的标准API方法均不会返回Manager或Content Manager组中的任何人。因此,您需要知道经理的电子邮件地址,并且只能使用getAccess()来验证他们确实是经理。
  • getOwner()始终返回null 。大概是因为团队驱动器上没有单个所有者。即使您恰好有1个Manager和0个Content Manager,它也会返回null

因此,似乎没有一种方法可以在团队协作中找到OWNERORGANIZER(大概是经理 Content经理)。相反,您必须已经知道与用户关联的电子邮件地址是什么,并致电getAccess()。这很不幸。

我期望以下解决方法能够起作用:

  • 在Team Drive中创建一个虚拟文件。由于Team Drive中的 file 权限映射为完全编辑评论查看getEditors()方法现在应该公开Manager和Content Manager。由于它们对文件具有 Edit 权限,因此大概应该通过getEditors()方法将它们返回。

不幸的是,这也不起作用。结果与文件夹情况完全相同。 Manager和Content Manager处于隐藏状态(即3种方法均未返回)。内容管理器的getAccess()仍为NONE,等等。


那么,我相信唯一的选择是使用高级API,以获得管理者和内容管理者的列表。特别是,Permissions对象上的teamDrivePermissionDetails[].role似乎恰好返回了映射到Team Drive权限的5种状态:

  
      
  • 组织者
  •   
  • fileOrganizer
  •   
  • 作家
  •   
  • 评论者
  •   
  • 阅读器
  •