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