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);
}
Другие вопросы по тегам