Как получить менеджеров / участников / и т. Д. 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
- писатель
- комментатора
- читатель