Я пытался настроить скрипт Python, который включает запрос учетной записи Gmail на наличие непрочитанных сообщений. В идеале я хотел бы использовать метод "list" Gmail API с необязательной фильтрацией параметров запроса для сообщений с labelId "UNREAD".
Когда я тестирую это на сайте Google (https://developers.google.com/gmail/api/v1/reference/users/messages/list), он работает правильно.
Но в моем сценарии параметр labelId, похоже, передается неправильно, и мой вывод всегда представляет собой полный список сообщений.
Вот строка кода, которая у меня есть прямо сейчас:
results = service.users().messages().list(userId='me', labelIds='UNREAD').execute()
Это возвращает все сообщения в почтовом ящике, не отфильтрованные только до НЕЧТЕНИЕ.
Я встречал документацию о людях, у которых была аналогичная проблема с необязательными запросами (параметр 'q' в методе списка Gmail API), но не для labelIds.
Есть ли у кого-нибудь опыт работы с этой проблемой?






Как насчет этой модификации? Я думаю, что есть несколько шаблонов для вашей ситуации.
results = service.users().messages().list(userId='me', labelIds=['UNREAD']).execute()
Например, если вы хотите получить непрочитанные сообщения в папке «Входящие», вы можете использовать userId='me', labelIds=['UNREAD', 'INBOX'] и userId='me', labelIds=['UNREAD'], q='in:inbox'.
results = service.users().messages().list(userId='me', q='is:unread').execute()
Например, если вы хотите получить непрочитанные сообщения в папке «Входящие», вы можете использовать userId='me', q='in:inbox is:unread'.
Если я неправильно понял ваш вопрос, извините.
@JEK Прошу прощения за неудобства. В моем окружении я мог подтвердить, что эти шаблоны работают. Поэтому я беспокоюсь о том, что мое окружение может отличаться от вашего. Например, чтобы получить сообщения в папке «Входящие», когда используются service.users().messages().list(userId='me', labelIds=['INBOX']).execute() и service.users().messages().list(userId='me', q='in:inbox').execute(), какие значения вы получите? В моей среде сообщения в папке «Входящие» можно получить из обоих образцов.
Спасибо за ответ, но ни один из них не решил мою проблему. Идентификаторы всех сообщений в папке «Входящие» по-прежнему возвращаются, а не просто непрочитаны. Я еще немного покопался, и это похоже на проблему, описанную здесь: github.com/google/google-api-nodejs-client/issues/469, но я не уверен, как можно применить их обходной путь с 'qs'.