驱动REST API不会提供超过100个结果

时间:2016-09-29 13:13:21

标签: google-drive-api

我尝试使用Drive REST api来获取我的共享文件。 https://www.googleapis.com/drive/v2/files?q=sharedWithMe%3Dtrue

我无法获得超过100个结果。我正在使用授权: https://www.googleapis.com/auth/drive

5 个答案:

答案 0 :(得分:2)

我要复制并粘贴我写的here相同的回复。

我面临同样的问题,所以我一直在做一些测试,这就是我发现的:

  • 如果我尝试使用字段:"文件,nextPageToken"的files.list,我只能获得100个文件。

  • 如果我尝试使用字段:"文件(名称,ID,父母),nextPageToken",我尝试使用files.list获得460个文件。

  • 如果我尝试使用字段:"文件(名称,ID,),nextPageToken" 没有父母字段,我收到1000个文件。

  • 如果我尝试使用字段:"文件(父母),nextPageToken"的files.list,我会收到460个文件。

所以看起来这取决于你请求的字段数,以及所请求的字段之一是否为parent字段。

答案 1 :(得分:1)

正确答案是您需要监视nextPageToken并继续获取结果,直到nextPageToken未定义/ null

答案 2 :(得分:0)

这是默认的结果数量。您需要提供maxResults查询参数。

Drive REST API doc - 你甚至看过它吗?

答案 3 :(得分:0)

正如@rorschach所述,您需要使用maxResults查询参数。

  

要返回的最大文件数。可接受的值为0到1000,包括0和1000。 (默认值:100)

如此tutorial中所述,您可以通过设置MaxResults将每页返回的记录数设置为1000。确保您正确配置它。以下是示例代码:

FilesResource.ListRequest request = service.Files.List();
request.MaxResults = 1000;
FileList files = request.Execute();

但如果您的Google云端硬盘上有超过1000个文件和目录,则需要使用Nextpage。您可以查看上面提供的教程中的示例代码。

编辑:如果使用API​​ v3,则属性为PageSize,而不是上述教程中引用的MaxResults。设置页面标记是相同的。

答案 4 :(得分:0)

我的完整示例代码:

//  This requires the Drive API To be turned on in the Advanced Google Services
function countFilesInFolder() {
  var folderid = DriveApp.getFoldersByName("html").next().getId();
  var query = 'trashed = false and "' + folderid + '"' + " in parents and title contains 'json'"// mimeType ="application/json"';
  var pageToken = null;

  var filesInFolder = Drive.Files.list({
    q: query,
    maxResults: 1000,
    pageSize: 1000,
    pageToken: pageToken,
  });
  pageToken = filesInFolder.nextPageToken;
  var cards = filesInFolder.items.length;
  while (pageToken != null) {
    filesInFolder = Drive.Files.list({
      q: query,
      maxResults: 1000,
      pageSize: 1000,
      pageToken: pageToken,
    });
    cards = cards + filesInFolder.items.length;
    pageToken = filesInFolder.nextPageToken;
  }
  Logger.log("filesInFolder: " + cards);
}