Я пытаюсь получить все непрочитанные сообщения из учетной записи Gmail, используя указанный ниже код
msgs = service.users().messages().list(userId='me',q='in:inbox is:unread').execute()
flag=1
while flag==1:
for i in range(0,len(msgs['messages'])):
message = service.users().messages().get(userId='me', id=msgs['messages'][i]['id']).execute()
print(message['snippet'])
if 'nextPageToken' in msgs.keys():
msgs = service.users().messages().list(userId='me',pageToken= msgs['nextPageToken']).execute()
else:
flag=0
Лог c для указанного выше кода
API возвращает 100 идентификаторов сообщений и идентификатор для следующей страницы с именем nextPageToken
. Мы используем этот токен для получения следующих 100 идентификаторов сообщений и так далее. Если следующей страницы нет, у нее не будет токена, и, следовательно, мои последние 4 строки кода проверяют ее существование. Если он не существует, он устанавливает флаг в 0, и пока l oop завершается.
Задача
Приведенный выше код извлекает ВСЕ сообщения (READ и UNREAD)
Пробовали другие методы
msgs = service.users().messages().list(userId='me',labelIds=['UNREAD']).execute()
и
msgs = service.users().messages().list(userId='me',q='in:inbox is:unread').execute()
Возможно Root Причина
Я заметил, что если непрочитанные сообщения <100, то они выбираются правильно. Однако, если непрочитанные сообщения> 100, тогда он извлекает все сообщения (READ + UNREAD)
Я рассмотрел этот ответ стекопотока , но он также не помог.