В GMail API, используя Python 3, как перейти к последней странице моих результатов? - PullRequest
0 голосов
/ 07 ноября 2018

Я использую GMail API для сбора некоторой информации, такой как рейсы, квитанции, счета, ecc. Я хочу пропустить несколько страниц или перейти к самой последней. Как мне это сделать с Python?

1 Ответ

0 голосов
/ 07 ноября 2018

Вы можете пропустить страницы, полагаясь на поле nextPageToken , как описано в справочнике по вызову list. Поле nextPageToken является частью полезной нагрузки ответа.

 query = 'example query has:attachment'
 nextPageToken = ''                                                                                                                                                         

  # The following while goes through all pages using the nextPageToken key in the response.
  while True:

  ### GET MESSAGES THAT MATCH A QUERY
      msg_results = service.users().messages().list(userId='me', maxResults=20, pageToken=nextPageToken, q=query).execute()
  #    messages = msg_results.get('messages', [])
      if('nextPageToken' in msg_results or nextPageToken==''):
          nextPageToken = msg_results['nextPageToken']
          print('nextPageToken={}'.format(nextPageToken))
      else:
          break

Как только вы выполните этот цикл, ваш msg_results будет содержать только сообщения, которые принадлежат последней странице. Сколько сообщений вы получите, будет зависеть от того, как установлено maxResults.

Если вы хотите пропустить только несколько страниц, например 3 или 4, легко изменить приведенный выше фрагмент, чтобы подсчитать количество циклов и выйти, когда он окажется на нужной странице.

Чтобы получить полностью рабочий пример кода, вы можете попробовать интегрировать приведенный выше фрагмент с этим кодом на GitHub или с симпатичным шаблоном из базы знаний GMail , который также находится на GitHub .

...