Просматривать файлы на диске Google Team

Я пытаюсь написать простой скрипт Служб Google, чтобы вывести список файлов на диске Google Team Drive, и у меня нет особого успеха.

Вот код:

function start()
{
  Logger.log("Starting application...");
  var startingFolders = DriveApp.getFoldersByName("Temp");
  if (startingFolders.hasNext())
  {
    // Assuming only one folder with that name
    accessFiles(startingFolders.next());
  }
  else
    Logger.log("Folder not found");
}

function accessFiles(folder)
{
  Logger.log("Folder: %s", folder.getName());
  // Print some file properties
  var files = folder.getFiles();
  while (files.hasNext())
  {
    var file = files.next();
    Logger.log("Working on file %s. Current access: %s.", file.getName(), file.getSharingAccess());
    // some work here...
  }

  // Explore subfolders
  while (folder.hasNext())
  {
    var subfolder = folder.next();
    accessFiles(subfolder);
  }
}

Проблема в том, что в журнале всегда печатается сообщение "Папка не найдена". "Temp" - это папка в Team Drive, к которой у меня есть Полный доступ. Обратите внимание, что я пытаюсь использовать скрипт Google Apps, а не REST API.

Я не уверен, что я делаю неправильно или команды Team Drives еще не поддерживаются...

Любая помощь будет оценена! Благодарю.

1 ответ

Решение

Невозможно выполнить поиск файлов и папок на Team Drive с помощью службы сценариев приложений Google (DriveApp), но мы могли бы использовать расширенную службу Drive, но сначала нам нужно сначала включить ее. Инструкции по включению расширенных услуг.

Следующий скрипт выведет список всех файлов в папке с именем Temp из указанного Team Drive по его идентификатору.

function listFiles(){
  var teamDriveId = 'put_here_the_teamdrive_id';
  var pageToken;
  var folders = Drive.Files.list({  
    corpora: 'teamDrive',
    supportsTeamDrives: true,
    teamDriveId: teamDriveId,
    includeTeamDriveItems: true,
    q: 'title = "Temp"'
  });
  if(folders.items.length !== 1) {
    Logger.log('There is a problem.');
    return;
  }
  var query = 'trashed = false and ' + //to exclude trashed files
      'not mimeType = "application/vnd.google-apps.folder"'; // To exclude folders
  var files, pageToken;
  do {
    files = Drive.Files.list({
      q: query,
      maxResults: 100,
      pageToken: pageToken,
      // required for team drive queries
      corpora: 'teamDrive',
      supportsTeamDrives: true,
      teamDriveId: teamDriveId,
      includeTeamDriveItems: true
    });
    if (files.items && files.items.length > 0) {
      for (var i = 0; i < files.items.length; i++) {
        var file = files.items[i];
        Logger.log('%s (ID: %s)', file.title, file.id);
      }
    } else {
      Logger.log('No files found.');
    }
    pageToken = files.nextPageToken;
  } while (pageToken);
}
Другие вопросы по тегам