Добавление фильтра почтовых ящиков в Gmail

#gmail #gmail-api

#gmail #gmail-api

Вопрос:

Я пытаюсь добавить простой фильтр почтовых ящиков в Gmail и получаю ошибку 400. В тексте ответа говорится, что «У фильтра нет никаких критериев», но, конечно, я считаю, что у меня есть. Вот данные полезной нагрузки:

 {
"filter": [{
"id": "ABC12345-2",
"criteria": {
"from": "donald trump"
},
"action": {
"addLabelIds":  ["TRASH"]
}
}]
}
  

Это URL-адрес, на который я отправляю:

 https://gmail.googleapis.com/gmail/v1/users/{userId}/settings/filters
  

С аутентификацией проблем нет. Я пробовал это с полем «id» и без него. Есть идеи о том, что я делаю не так?

Ответ №1:

Я не уверен в вашем реальном сценарии. Так что я не уверен в требовании {"filter": []} . Но когда я увидел официальный документ, кажется, что образец тела запроса для конечной POST https://gmail.googleapis.com/gmail/v1/users/{userId}/settings/filters точки выглядит следующим образом, когда используется тело вашего запроса.

Пример тела запроса:

 {
  "id": "###",
  "criteria": {"from": "###"},
  "action": {"addLabelIds": ["TRASH"]}
}
  
  • id : строка, идентификатор, присвоенный серверу фильтра.
  • criteria : объект (Критерии), соответствующий критериям для фильтра.
  • action : объект (Действие), действие, которое выполняет фильтр.
  • В этом случае, даже когда id не используется, ошибка не возникает.
  • Вы также можете протестировать выше в разделе «Попробуйте этот API».

Ссылки:

Комментарии:

1. С помощью кода «filter»: [] я просто пытался эмулировать json, который Gmail выдает при извлечении существующих фильтров, созданных в пользовательском интерфейсе Gmail. Этот формат позволяет извлекать несколько фильтров за один вызов. По-видимому, Gmail не допускает такой же кодировки при импорте. Я смог заставить его работать, выполнив один фильтр для каждого вызова. Спасибо за вашу помощь.

2. @Джефф Маккей Спасибо за ответ и добавление информации. Я рад, что ваша проблема была решена. И вам спасибо.