Поддержка общего диска в Google Apps Script

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

Например,

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

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


person tgpfeiffer    schedule 16.06.2020    source источник
comment
Отвечает ли это на ваш вопрос? Доступ к файлам и папкам на общем диске   -  person Rubén    schedule 16.06.2020
comment
Это связано, но я думаю, что главное, чего мне не хватало, заключается в том, что (1) да, я не могу работать с общими дисками с помощью DriveApp API, и (2) я могу используйте Drive API v2 из скриптов Google Apps Script, которые кажутся уже известными пользователю, задающему вопрос в вашей ссылке. Так что я думаю, что в этом отношении вопрос не совсем повторяется, и ответ, предоставленный ziganotschka ниже, предоставил мне важную информацию.   -  person tgpfeiffer    schedule 17.06.2020


Ответы (1)


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

  • Действительно, общие диски не поддерживаются DriveApp, который имеет ограниченный объем
  • Но если вы включите Advanced Drive Service, вы сможете использовать в Apps Script все методы 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});
}
person ziganotschka    schedule 16.06.2020
comment
Понятно, я сталкивался с Drive.Drives раньше, но я не понимал, что его также можно использовать из Google Apps Script после включения Advanced Drive Service, я думал, что это всего лишь веб-API. Итак, теперь, получив GoogleAppsScript.Drive.File, я могу проверить разрешения с помощью чего-то вроде Drive.Permissions.list(f.getId(), {supportsAllDrives: true}).find((p) => p.emailAddress == "[email protected]");. Спасибо! - person tgpfeiffer; 17.06.2020
comment
@tgpfeiffer - обратите внимание на будущее, что не только Диск, но и все дополнительные службы являются оболочки для соответствующих API REST, поэтому вы можете использовать их как взаимозаменяемые. - person Oleg Valter; 17.06.2020