Team Drive 有五个权限级别:
- 经理
- 内容经理
- 贡献者
- 评论者
- 查看者
Folder API另一方面,只有三个函数用于获取文件夹中人员的用户列表:
getEditors()
getOwner()
getViewers()
如果您使用的是“我的云端硬盘”,则效果很好,因为它具有完全相同的三个级别:
- 是所有者
- 可以组织、添加和编辑
- 只能查看
如何获取 Google 团队云端硬盘中的 5 个访问级别?如果我确实调用这 3 个函数,它们在团队云端硬盘上对应哪个访问级别? (例如,getEditors
是否返回 Manager
组中的每个人?)
我看到有一个 Permission具有我正在寻找的确切 5 个权限的枚举:
查看
编辑
评论
所有者
组织者
...我可以打电话 getAccess()
获取给定用户
或电子邮件
的访问级别。问题是我不知道将哪些电子邮件
传递给该函数。
如何获取 5 个类别中任意类别的人员列表(例如内容管理员
)?或者我如何获取团队云端硬盘上所有人员的列表(例如,这样我就知道要与 getAccess()
使用哪些电子邮件)?
最佳答案
以下是团队云端硬盘 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) |
+-----------------------+-------------+-------------------+
一些结果:
- 无法知道谁是团队云端硬盘上的内容管理员:请注意它如何为两个内容管理员返回
NONE
以及不在团队云端硬盘中的人员。因此,即使您知道该人的电子邮件地址,也无法使用getAccess()
方法知道谁是团队云端硬盘上的内容管理员。这可能是 API 中的错误? - 您可以轻松获取所有贡献者:只需调用
getEditors()
方法即可。 - 您可以获取所有评论者和查看者,但也需要使用
getAccess()
:因为评论者和查看者都是通过getViewers
返回的,您需要将其与 getAccess() 返回的结果进行交叉引用,以找到实际的评论者或查看者。 - 没有 API 方法可以获取管理员或内容管理员:返回文件夹上的一组用户的标准 API 方法都不会返回管理员或内容管理员组中的任何人。因此,您需要知道经理的电子邮件地址,并且只能使用 getAccess() 来验证他们确实是经理。
getOwner()
始终返回null
。这大概是因为团队云端硬盘上没有单一所有者。即使您正好有 1 个管理器和 0 个内容管理器,它也会返回null
。
因此,似乎没有办法在团队云端硬盘上找到OWNER
或ORGANIZER
(大概是经理 和内容管理员,分别)使用标准 API。相反,您必须已经知道与用户关联的电子邮件地址是什么,并调用 getAccess()
。这是不幸的。
我期望以下解决方法能够发挥作用:
- 在团队云端硬盘中创建一个虚拟文件。由于团队云端硬盘中的文件权限正好映射到编辑、评论、查看,因此
getEditors( )
方法现在应该公开管理器和内容管理器。由于它们具有文件的编辑权限,因此它们应该由getEditors()
方法返回。
不幸的是,这也不起作用。结果与文件夹情况完全相同。 Manager 和 Content Manager 被隐藏(即 3 个方法都没有返回它们)。内容管理器的 getAccess() 仍然是 NONE,等等。
要获取管理者和内容管理者的列表,我相信唯一的选择是使用高级 API。特别是,它看起来像 Permissions 上的 teamDrivePermissionDetails[].role
对象准确返回映射到团队云端硬盘权限的 5 个状态:
- organizer
- fileOrganizer
- writer
- commenter
- reader
关于google-apps-script - 如何获取 Google Team Drive 的管理者/贡献者/等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54189752/