Drive REST API не дает более 100 результатов
Я попробовал Drive REST api, чтобы получить мои общие файлы. https://www.googleapis.com/drive/v2/files?q=sharedWithMe%3Dtrue
Я не могу получить более 100 результатов. Я использую авторизацию: https://www.googleapis.com/auth/drive
4 ответа
Я собираюсь скопировать и вставить тот же ответ, который я написал здесь.
Я столкнулся с той же проблемой, поэтому я провел несколько тестов, и вот что я нашел:
Если я попробую файл files.list с полями: "files, nextPageToken", я получу только 100 файлов.
Если я попробую файл files.list с полями: "файлы (имя, идентификатор и т. Д., Родители), nextPageToken", я получу 460 файлов.
Если я попробую файл files.list с полями: "файлы (имя, идентификатор и т. Д.), NextPageToken" без поля родителей, я получу 1000 файлов.
Если я попробую файл files.list с полями: "файлы (родители), nextPageToken", я получу 460 файлов.
Так что, похоже, это зависит от того, сколько полей вы запрашиваете, а также от того, является ли одно из запрошенных полей родительским полем.
Правильный ответ заключается в том, что вам нужно отслеживать nextPageToken и продолжать извлекать результаты, пока nextPageToken не станет неопределенным / нулевым
Это количество результатов по умолчанию. Вы должны предоставить maxResults
параметр запроса.
Drive REST API doc - ты вообще на это смотрел?
Как сказал @rorschach, вам нужно использовать maxResults
параметр запроса.
Максимальное количество файлов для возврата. Допустимые значения от 0 до 1000 включительно. (По умолчанию: 100)
Как указано в этом руководстве, вы можете установить количество записей, возвращаемых на страницу, до 1000, установив MaxResults
, Убедитесь, что вы настроили его правильно. Вот пример кода:
FilesResource.ListRequest request = service.Files.List();
request.MaxResults = 1000;
FileList files = request.Execute();
Но если у вас на Google Диске более 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);
}