有没有办法设置谷歌驱动器文件的初始计数记录数,就像setMaxResults?

时间:2015-04-27 11:05:51

标签: java google-drive-api

service.files().list().setMaxResults(50)

就像上面的那个有什么方法可以设置初始计数,还是可以通过查询?

2 个答案:

答案 0 :(得分:0)

假设您有一个返回200个文件的请求。

通过将maxResults设置为20,您将每页返回20个文件,最终将有10个页面。然后,您可以使用pageToken请求其余文件。

Files.List request = service.files().list().setMaxResults(20);

    do {
      try {
        FileList files = request.execute();

        result.addAll(files.getItems());
        request.setPageToken(files.getNextPageToken());
      } catch (IOException e) {
        System.out.println("An error occurred: " + e);
        request.setPageToken(null);
      }
    } while (request.getPageToken() != null &&
             request.getPageToken().length() > 0);

你必须制作主要请求,然后设置每个页面。没有办法说一个请求将返回200个文件,然后只获取文件101-120。

注意我不是一名java程序员,该示例是从文档files.list中复制而来的

答案 1 :(得分:0)

@daimTo有正确的答案。还有几点......

1 /“你最终会得到10页”,实际上你最终会得到至少 10页,因为有些页面可能会人满为患。

2 /实现OP正在寻找效果的最佳方法是: -

  1. 执行20的初始请求,指定“fields = nextPageToken,items / id”。
  2. 确认结果中有20个项目。如果不是,则从20减去计数并重复步骤1。重复,直到获取20个。
  3. 使用您要查找的任何maxResults执行查询,在给出的示例中再次使用20。与第2步一样,请注意,您不能保证在单个页面中获得20个,因此您必须监视nextPageToken。
  4. 当然,如果这些数字真的是20-40,那么仅仅请求40并忽略结果集中的前20个项目实际上要快得多。