Как проверить, принадлежит ли файл My Drive или Team Drive - PullRequest
0 голосов
/ 06 июня 2018

Есть ли менее трудоемкий способ проверить, является ли корневой каталог файла "Мой диск" или "Team Drive"?

Я пытался использовать file.getParents();, а затем перебирать всех родителей и, наконец, Root, но это слишком много времени.

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Если вы работаете с расширенной службой Drive, вы можете напрямую запросить информацию о Team Drive:

Пример:

function getTeamDriveId(fileId) {
  const options = {
    fields: "id,title,teamDriveId",
  };
  const file = Drive.Files.get(fileId, options);
  return file.teamDriveId;
}

Для файла, не входящего в Team Drive,вышеуказанный идентификатор будет false-y.

Существует несколько полей метаданных для запроса, которые присутствуют или отсутствуют только для элементов Team Drive.Важно отметить, какую версию API вы используете, так как есть изменения в именах ресурсов между 2 и 3. Также важно использовать строгие сравнения при проверке наличия полей Boolean или других полей, которые могут быть ложными.-y.

Отсутствует:

  • ownerNames
  • владельцев
  • writersCanShare
  • общих
  • прав доступа
  • folderColorRgb
  • ownByMe

Присутствует:

  • teamDriveId
  • hasAugmentedPermissions
  • возможности / canMoveTeamDriveItem
  • возможностей / canReadTeamDrive
  • trashingUser
  • trashedDate

Ссылки:

0 голосов
/ 06 июня 2018

Когда файл находится в Team Drive, владельцем является Team Drive, а не какой-либо конкретный пользователь.

Вы можете выполнить проверку владения файлом, и если для него установлено значение NULL, файлскорее всего внутри Team Drive.

var file = DriveApp.getFileById("fileID");
if (file.getOwner() === null) {
  // do something here
}
...