【问题标题】:browse files in google team drive浏览谷歌团队驱动器中的文件
【发布时间】:2018-06-25 21:16:51
【问题描述】:

我正在尝试编写一个简单的 Google Apps 脚本来列出 Google 团队云端硬盘中的文件,但没有取得多大成功。

代码如下:

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”是 团队云端硬盘 中我拥有完全访问权限的文件夹。请注意,我正在尝试使用 Google Apps 脚本而不是 REST API。

我不确定自己做错了什么,或者是否尚不支持团队云端硬盘...

任何帮助将不胜感激!谢谢。

【问题讨论】:

  • 我不记得有人提到它还受支持。另一种选择是可以支持它,但来自用户驱动器的脚本无法到达团队驱动器。您的脚本是否位于同一个团队驱动器中?

标签: google-apps-script google-drive-api google-drive-shared-drive


【解决方案1】:

无法使用 Google 应用脚本服务 (DriveApp) 搜索团队云端硬盘上的文件和文件夹,但我们可以使用云端硬盘高级服务,但首先我们应该先启用它。说明在Enabling Advanced Services

以下脚本将按 ID 列出指定团队云端硬盘中名为 Temp 的文件夹中的所有文件。

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);
}

【讨论】:

  • 非常感谢@Rubén,这正是我想要做的!使用这种类似 sql 的查询不再需要递归搜索!
猜你喜欢
  • 2018-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-31
  • 2014-06-24
  • 2012-01-21
  • 2021-12-28
相关资源
最近更新 更多