Gmail API: messages.list внезапно появляется ключ ошибки сообщения, несмотря на то, что в предыдущей итерации есть nextPageToken - PullRequest
0 голосов
/ 06 июня 2018

Раньше я общался с API Gmail с прошлого года, используя эти тесты https://developers.google.com/gmail/api/v1/reference/users/messages/list#try-it, но теперь этот пример не работает, потому что кажется, что сообщений больше, но следующая итерация пуста.

Проблеманаходится в этой части кода:

while 'nextPageToken' in response:
      page_token = response['nextPageToken']
      response = service.users().messages().list(userId=user_id, q=query,
                                         pageToken=page_token).execute()
      messages.extend(response['messages'])

Ошибка возникает при попытке получить доступ к ответу ['messages'], поскольку уникальный ключ в ответе - «resultSizeEstimate» и равен 0. Похоже,page_token указывает на следующую пустую страницу.

Кто-то также испытывает эту проблему?

1 Ответ

0 голосов
/ 07 июня 2018

Если ваша последняя страница полностью содержит последнее электронное письмо с этим конкретным запросом, вы получите nextPageToken на страницу с ответом, подобным следующему:

{
  "resultSizeEstimate": 0
}

Самый простой способ обойти это - простодобавить проверку, если messages является частью ответа:

while 'nextPageToken' in response:
      page_token = response['nextPageToken']
      response = service.users().messages().list(userId=user_id, q=query, pageToken=page_token).execute()
      if 'messages' in response:
            messages.extend(response['messages'])
...