Поддержка "общего диска" в Google Apps Script - PullRequest
1 голос
/ 16 июня 2020

Я пишу инструмент JavaScript в скрипте Google Apps для проверки некоторых свойств документов, таких как «все ссылки действительны», «правильно ли установлены разрешения» и т. Д. Я использую API, описанный в https://developers.google.com/apps-script/reference/drive/drive-app, чтобы искать файлы по идентификатору, проверять их разрешения, находить их на Google Диске и т. Д. c., Но я обнаружил, что «Общие диски» не работают очень хорошо с этим API.

Например,

  • для папки root общего диска, Folder.getName() возвращает только «Диск», а чем имя диска,
  • даже если mygroup@domain.com является «диспетчером» общего диска, folder.getAccess('mygroup@domain.com') - НЕТ и folder.getViewers() пусто,
  • некоторые папки на общих дисках не (всегда) включен в итератор DriveApp.getFolders().

В частности, вторая точка теперь для меня блокирует, но чего мне здесь не хватает? Есть ли другой API, который я должен использовать, или это просто ошибка, о которой я должен сообщить? Есть ли документация о том, какие функции API Drive я могу и не могу использовать с общими дисками?

1 Ответ

2 голосов
/ 16 июня 2020

Используйте Advanced Drive Service вместо DriveApp

  • Действительно, общие диски не поддерживаются DriveApp, который имеет ограниченный диапазон
  • Но если вы включите the Advanced Drive Service, вы сможете использовать в скрипте приложений все методы Drive API v2 , которые поддерживают общие диски

Пример:

function myFunction() {
  var sharedDriveName = Drive.Drives.get("XXXXXXXXXXXXXXXXXXX").name;
  //it is important to specify that the folder is located on a shared drive with {"supportsAllDrives": true}
  var folderOnDriveName = Drive.Files.get("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",{"supportsAllDrives": true}).title;
  var folderPermissions = Drive.Permissions.list("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",{"supportsAllDrives": true});
}
...