Получить разрешения для папки TeamDrive - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь получить список пользователей, имеющих доступ (Edit, Comment, View ...) к корневой папке TeamDrive, а не к файлу TeamDrive.

Первая попытка:

var folders = Drive.Teamdrives.list({
  pageSize:100,
  pageToken:folderPT
});

for (var i = 0; i < folders.items.length; i++)
    {
      var folder = folders.items[i];

      var teamDrive = Drive.Teamdrives.get(folder.id);
      var test = DriveApp.getFolderById(folder.id);
      Logger.log(test.getEditors());
    }

С какими методами мне приходится работать? Можно ли сделать это ?

Ответ из моего кода - только пустые результаты:

[18-09-05 14:18:36:282 CEST] []
[18-09-05 14:18:36:771 CEST] []
[18-09-05 14:18:37:143 CEST] []
[18-09-05 14:18:37:625 CEST] []
[18-09-05 14:18:38:306 CEST] []
[18-09-05 14:18:38:690 CEST] []

Редактировать: На самом деле приведенный выше код работает, моя тестовая папка была пустой. Но ответ ниже лучше.

1 Ответ

0 голосов
/ 05 сентября 2018

Файл можно использовать для определения разрешений, установленных для самого файла или унаследованных от Team Drive.

Вы можете сделать это через пространство имен Permissions в Drive.

function getFilePermissions(fileId) {

  var permissions = Drive.Permissions.list(fileId,  {supportsTeamDrives:true,
                                                     corpora: 'teamDrive',
                                                     includeTeamDriveItems: true})
  .items
  .reduce(function(all, i){

    var role = i.teamDrivePermissionDetails.map(function(permission){

      // commenters are flagged as having an additional role as readers
      var activeRole = (i.additionalRoles) ?  i.additionalRoles[0] : permission.role;

      return {emailAddress: i.emailAddress,
              teamDrivePermissionType: permission.teamDrivePermissionType,
              role: activeRole};
    });

    return all.concat(role);
  }, []);

  return permissions;
}

Эта функция уменьшает количество информации, возвращаемой вызовом Permissions.list для возврата массива объектов, из которого вы можете получить целую кучу информации. Один пользователь может быть читателем Team Drive, но автором (редактором) самого файла, эта функция возвращает оба разрешения.

, например

 [
    {
        "emailAddress": "geoff@example.com",
        "teamDrivePermissionType": "member",     <-- a Team Drive permission
        "role": "organizer"                      <-- an Team Drive domain member
    },
    {
        "emailAddress": "jonathon@example.com", 
        "teamDrivePermissionType": "member",
        "role": "writer"                         <-- a non-Domain member
    },
    {
        "emailAddress": "jonathon@example.com",
        "teamDrivePermissionType": "file",
        "role": "writer"                         <-- editor set on the file share
    },
    {
        "emailAddress": "svea@example.com",
        "teamDrivePermissionType": "file",
        "role": "reader"                         <-- viewing rights set at file level
    },
    {
        "emailAddress": "info@example.com",
        "teamDrivePermissionType": "member",
        "role": "organizer"
    },
    {
        "emailAddress": "rebekkah@example.com",
        "teamDrivePermissionType": "file",
        "role": "commenter"                      <-- this is a reader with comment rights
    }
]

Отфильтруйте его по member или file (не член) или по роли: читатель, писатель и т. Д.

Для получения дополнительной информации о схеме объекта Permissions проверьте здесь: Ресурс Permissions

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...