Gmail Draft API возвращает ошибку 404

Я пытаюсь обновить черновик сообщения с помощью скрипта Google Apps. Вот код

 var forScope = GmailApp.getInboxUnreadCount();
 var params = {method:"put",
                contentType: "application/json",
                headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
                muteHttpExceptions:true,
                payload:JSON.stringify({
                  "message": {
                    "id": draftId,
                    "raw": draftBody
                  }
                })
               };
  var resp = UrlFetchApp.fetch("https://www.googleapis.com/gmail/v1/users/me/drafts/"+draftId, params);

Но это возвращает следующую ошибку

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "notFound",
    "message": "Not Found"
   }
  ],
  "code": 404,
  "message": "Not Found"
 }
}

Я неоднократно проверял, что идентификатор проекта верен.

2 ответа

Решение

НАСКОЛЬКО МНЕ ИЗВЕСТНО, draft ID отличается от message ID, Глядя на ваш код, кажется, что вы поставляете messageId вместо draftId,

Попробуйте получить неизменный черновой идентификатор, используя Users.drafts: list, Это вернет тело ответа со следующей структурой

"drafts":[
  {
  "id": draftId,
  "message": {
     "id": messageId,
     "raw": bytes
     }
  }
]

Затем вы можете использовать draftId когда вы обновляете с помощью Users.drafts: update,

Вам нужен URL для загрузки.

developers.google.com - Users.drafts: обновление | Gmail API | Разработчики Google

https://developers.google.com/gmail/api/v1/reference/users/drafts/update

Другие вопросы по тегам