【发布时间】: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
我尝试了 Drive REST api 来获取我的共享文件。 https://www.googleapis.com/drive/v2/files?q=sharedWithMe%3Dtrue
我无法获得超过 100 个结果。我正在使用授权: https://www.googleapis.com/auth/drive
【问题讨论】:
标签: google-drive-api
我将复制并粘贴我写的相同回复 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 个文件。
因此,这似乎取决于您请求的字段数量以及请求的字段之一是否为父字段。
【讨论】:
正确答案是你需要监控 nextPageToken 并不断获取结果直到 nextPageToken 为 undefined/null
【讨论】:
这是默认的结果数量。您需要提供maxResults查询参数。
Drive REST API doc - 你看过了吗?
【讨论】:
正如@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。设置页面令牌是一样的。
【讨论】:
我的完整示例代码:
// 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);
}
【讨论】: