Как получить менеджеров / участников / и т. Д. Google Team Drive? - PullRequest
0 голосов
/ 15 января 2019

Team Drive имеет пять уровней разрешений:

  • Менеджер
  • Content Manager
  • Автор
  • 1010 * Commenter *
  • 1012 * Средство просмотра *

API папки , с другой стороны, имеет только три функции для получения списка пользователей в папке:

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

Это прекрасно работает, если вы используете My Drive, потому что он имеет те же три уровня:

  • Владелец
  • Может организовывать, добавлять и редактировать
  • Может просматривать только

Как мне получить каждый из 5 уровней доступа в Google Team Drive? Если я назову эти 3 функции, какому уровню доступа они соответствуют в Team Drive? (Например, getEditors возвращает всех в группу Manager?)

Я вижу, есть Разрешение Перечисление с точными 5 разрешениями, которые я ищу:

  • VIEW
  • EDIT
  • COMMENT
  • OWNER
  • ORGANIZER

... и я могу позвонить getAccess(), чтобы получить уровень доступа с User или email. Проблема в том, что я не знаю, какие email с передать функции.

Как получить список людей в любой из 5 категорий (например, Content Manager)? Или как мне получить список всех людей, которые находятся на Team Drive (например, чтобы я знал, какие электронные письма использовать с getAccess())?

1 Ответ

0 голосов
/ 15 января 2019

Вот сводка отображений между разрешениями, указанными в пользовательском интерфейсе Team Drive, соответствующим значением 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)            |
+-----------------------+-------------+-------------------+

Некоторые результаты:

  • Невозможно узнать, кто является Content Manager в Team Drive : обратите внимание, как он возвращает NONE как для Content Manager s, так и для людей, которые не включены командный драйв. Поэтому невозможно узнать, кто является Content Manager на Team Drive, используя метод getAccess(), даже если вы знаете адрес электронной почты этого человека. Это может быть ошибка в API?
  • Вы можете легко получить всех участников : просто вызовите метод getEditors().
  • Вы можете получить все комментаторы и средства просмотра, но вам нужно использовать getAccess() тоже : поскольку и Commenters, и средства просмотра возвращаются через getViewers, вам нужно будет сопоставить это с возвращенными результатами в getAccess (), чтобы найти фактических Комментаторов или Зрителей.
  • Нет методов API для получения менеджера или контент-менеджеров : Ни один из стандартных методов API, которые возвращают набор пользователей в папку, не вернет никого из группы Manager или Content Manager. Поэтому вам необходимо знать адрес электронной почты менеджеров, и вы можете использовать getAccess () только для проверки того, что они действительно являются менеджерами.
  • getOwner() всегда возвращает null. Предположительно, это потому, что в Team Drives нет ни одного владельца. Он вернет null, даже если у вас ровно 1 менеджер и 0 контент-менеджеров.

Поэтому, похоже, нет способа найти OWNER s или ORGANIZER s на Team Drive (предположительно, Managers и Content Manager , соответственно) с использованием стандартного API. Вместо этого вы уже должны знать, какой адрес электронной почты связан с пользователем, и набрать getAccess(). Это прискорбно.

Я ожидал, что сработает следующий обходной путь:

  • Создайте фиктивный файл внутри Team Drive. Поскольку права доступа file внутри Team Drive точно соответствуют Edit , Comment , View , метод getEditors() теперь должен предоставлять Manager и контент-менеджеры. Поскольку у них есть разрешение Редактировать для файла, они, вероятно, должны быть возвращены методом getEditors().

К сожалению, это тоже не сработало. Результаты были точно такие же, как в случае папка . Менеджер и Менеджер контента были скрыты (то есть ни один из 3 методов не возвращал их). GetAccess () Менеджера контента все еще НЕТ и т. Д.


Чтобы получить список менеджеров и контент-менеджеров, я считаю, что единственный вариант - использовать расширенный API. В частности, похоже, что teamDrivePermissionDetails[].role для объекта Permissions возвращает ровно 5 состояний, которые соответствуют разрешениям Team Drive:

  • 1080 * Организатор *
  • fileOrganizer
  • автор
  • комментатор
  • Читатель
...