【问题标题】:Drive REST API not giving more than 100 results驱动 REST API 不提供超过 100 个结果
【发布时间】:2016-09-29 13:13:20
【问题描述】:

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

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

【问题讨论】:

    标签: google-drive-api


    【解决方案1】:

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

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

    • 如果我尝试使用带有以下字段的 files.list:“files, nextPageToken”,我只会得到 100 个文件。

    • 如果我尝试使用带有以下字段的 files.list:“files(name, id, etc, parents), nextPageToken”,我会得到 460 个文件。

    • 如果我尝试使用带有以下字段的 files.list:“files(name, id, etc), nextPageToken”没有父母字段,我会得到 1000 个文件。

    • 如果我尝试使用带有以下字段的 files.list:“files(parents), nextPageToken”,我会得到 460 个文件。

    因此,这似乎取决于您请求的字段数量以及请求的字段之一是否为父字段。

    【讨论】:

      【解决方案2】:

      正确答案是你需要监控 nextPageToken 并不断获取结果直到 nextPageToken 为 undefined/null

      【讨论】:

        【解决方案3】:

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

        Drive REST API doc - 你看过了吗?

        【讨论】:

        • 是的,我尝试使用 maxResults=1000,但我仍然得到了 100 个结果,尽管我有超过 100 个文件。
        • 这个答案和@adjuremods 的答案不正确。不保证增加 maxResults(比如说 1000)会返回 1000 个结果。它是“maxResults”而不是“numResults”,所以它只是一个最大值。 Drive 可以在第一批中愉快地返回 0 个结果。
        • 显然您不能查询比实际存在更多的结果/文件。他在他的问题中明确表示他 有 > 100 个文件,在这种情况下 maxResults 是他所需要的。
        【解决方案4】:

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

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

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

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

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

        编辑:如果使用 API v3,属性是PageSize,而不是上面教程中提到的MaxResults。设置页面令牌是一样的。

        【讨论】:

          【解决方案5】:

          我的完整示例代码:

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

          【讨论】:

          • 只有代码的答案通常可以通过添加对它们的工作方式和原因的解释来改进。
          猜你喜欢
          • 1970-01-01
          • 2018-05-12
          • 2021-03-04
          • 2021-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-11
          • 2017-09-15
          相关资源
          最近更新 更多