首页 > 解决方案 > 在 Apps 脚本中使用大文件夹

问题描述

我有一个文件夹,里面有超过 50,000 个文件,而且它太大了,即使获取所有文件 ID 也会导致 6 分钟超时。事实上它太大了,我什至无法计算文件的数量。这是我为计算文件而制作的脚本。如果它没有运行,请道歉。我将其修改为在此处发布以使其更易于阅读。

  //This requires the Drive API To be turned on in the Advanced Google Services

  function (folder){
    var allDriveFiles = folder.getFiles();
    var query = 'trashed = false and "' + folder.getId() +'" in parents';
    
    var counter =0;
    var pageToken
    do {
      var filesInFolder = Drive.Files.list({q: query,maxResults: 100, pageToken: pageToken});
      counter += filesInFolder.items.length;  
      pageToken = filesInFolder.nextPageToken;
      Logger.log('filesInFolder: ' + counter);
    } while (pageToken);

    Logger.log('filesInFolder: ' + counter);

  }

第一个 Logger.log 在那里,因为它总是在到达第二个之前超时。它通过超时获得大约 13000 个文件。

那么问题来了:

标签: google-apps-script

解决方案


Apps 脚本有其局限性。

根据您拥有的帐户类型,您的脚本最大运行时间可以是:

  • 6 分钟- 如果您使用以下帐户类型之一:消费者帐户、Google Workspace 免费版、Google Workspace Basic;
  • 30 分钟- 如果您使用的是 Google Workspace 商业/企业/教育帐户;

但是,由于您想要检索如此大量的文件并且您已经在使用 Drive Advanced 服务,因此最好的解决方案是使用 Drive API 本身。

一种解决方案是从此处的 Drive API v3 Node.js 快速入门开始,然后根据您的需要进行调整。

参考


推荐阅读