Как получить менеджеров / участников / и т. Д. Google Team Drive?

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

  • Менеджер
  • Контент менеджер
  • участник
  • Commenter
  • зритель

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 ответ

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

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

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

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

Я ожидал следующего обходного пути для работы:

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

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


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

  • организатор
  • fileOrganizer
  • писатель
  • комментатора
  • читатель
Другие вопросы по тегам