代码之家  ›  专栏  ›  技术社区  ›  Senseful

如何获得google团队驱动的经理/贡献者等?

  •  0
  • Senseful  · 技术社区  · 5 年前

    Team Drive有五个权限级别:

    • 经理
    • 内容管理器
    • 撰稿人
    • 评论家
    • 观众

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

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

    如果您使用的是“我的硬盘”,这个功能很好,因为它具有完全相同的三个级别:

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

    如何在google team drive中获得5个访问级别?如果我调用这3个函数,它们在团队驱动上对应于哪个访问级别?(例如 getEditors 把所有人都送回 Manager 组?)

    我看到有一个 Permission 具有我要查找的5个权限的枚举:

    • VIEW
    • EDIT
    • COMMENT
    • OWNER
    • ORGANIZER

    …我可以打电话给你 getAccess() 获取给定的访问级别 User email . 问题是我不知道 电子邮件 传递给函数。

    我如何获得5个类别中任何一个类别的人员列表(例如 Content Manager )?或者我如何得到一份所有团队成员的列表(例如,我知道要与哪些电子邮件一起使用 GETAccess() )?

    1 回复  |  直到 5 年前
        1
  •  1
  •   Senseful    5 年前

    下面是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)            |
    +-----------------------+-------------+-------------------+
    

    一些结果:

    • 无法知道谁是团队驱动中的内容经理 :注意它如何返回 NONE 对于两者 内容管理器 和其他人一起开车。因此,使用 GETAccess() 方法,即使您知道此人的电子邮件地址。这可能是api中的一个bug?
    • 你可以很容易地得到所有的贡献者 :只需调用 getEditors() 方法。
    • 你可以得到所有的评论和浏览者,但是需要使用 GETAccess() :因为评论者和观众都是通过 getViewers ,您将需要对照getaccess()中返回的结果交叉引用它,以查找实际的注释者或查看器。
    • 没有API方法来获取管理器或内容管理器 :在文件夹上返回一组用户的标准api方法都不会返回manager或content manager组中的任何人。因此,您需要知道经理的电子邮件地址,并且只能使用getaccess()来验证他们确实是经理。
    • getOwner() 总是返回 null . 大概这是因为团队驱动中没有一个所有者。它会回来的 无效的 即使只有1个管理器和0个内容管理器。

    因此,似乎没有办法找到 OWNER S或 ORGANIZER 是一个团队驱动(可能是 管理者 内容管理器 ,分别)使用标准API。相反,您必须已经知道与该用户关联的电子邮件地址是什么,然后调用 GETAccess() . 这是不幸的。

    我希望下面的解决方法能奏效:

    • 在团队驱动器中创建一个虚拟文件。自从 文件 团队驱动器映射中的权限 编辑 , 评论 , 视图 , the GETEdError() 方法现在应该公开管理器和内容管理器。因为他们有 编辑 对文件的权限,它们应该由 GETEdError() 方法。

    不幸的是,这也不起作用。结果是 确切地 文件夹 案例。管理器和内容管理器被隐藏(即,3个方法都没有返回它们)。内容管理器的getaccess()仍然是none,等等。


    为了得到经理和内容经理的列表,我相信唯一的选择就是使用高级api。尤其是,看起来 teamDrivePermissionDetails[].role Permissions 对象精确返回映射到团队驱动器权限的5种状态:

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