- Вы уже смогли правильно создать черновик письма.
- Вы хотите отправить созданный черновик письма, напрямую запросив конечную точку API Gmail с помощью Google Apps Script.
Если мое понимание верно, как насчет этой модификации?
Очки модификации:
Модифицированный скрипт:
var resp1 = UrlFetchApp.fetch("https://www.googleapis.com/gmail/v1/users/me/drafts/send", {
method: "POST",
headers: {
"Authorization": "Bearer " + service.getAccessToken(),
"Content-Type": "application/json"
},
muteHttpExceptions: true,
payload: JSON.stringify({
"id": draftID
})
});
Примечание:
- Эта модификация предполагает, что вы уже смогли использовать Gmail API с помощью токена доступа.
- Если формат черновика почты не завершен, то при отправке черновика почты возникает ошибка.
Справка:
Если я неправильно понимаю ваш вопрос, я прошу прощения.
Edit:
Когда вы хотите создать черновик электронного письма, включая файл вложения, как насчет этого примера сценария? Это от https://stackoverflow.com/a/45992149/7108653.
Пример сценария:
Этот пример сценария создает черновик письма с помощью Gmail API.
function createDraft() {
var fileId = "### file id ###"; // Please set this.
var file = DriveApp.getFileById(fileId);
var forScope = GmailApp.getInboxUnreadCount();
var htmlBody = 'sample HTML body'; // Please set this.
var raw =
'Subject: sample subject\r\n' + // Please set this.
'To: aa@bb.cc\r\n' + // Please set this.
'Content-Type: multipart/mixed; boundary=##########\r\n\r\n' +
'--##########\r\n' +
'Content-Type: text/html; charset=UTF-8\r\n\r\n' + htmlBody + '\r\n' +
'--##########\r\n' +
'Content-Type: ' + file.getMimeType() + '; charset=UTF-8; name="' + file.getName() + '"\r\n' +
'Content-Disposition: attachment; filename="' + file.getName() + '"\r\n' +
'Content-Transfer-Encoding: base64\r\n\r\n' + Utilities.base64Encode(file.getBlob().getBytes()) +
'\r\n--##########\r\n';
var draftBody = Utilities.base64EncodeWebSafe(raw, Utilities.Charset.UTF_8);
var params = {
method:"post",
contentType: "application/json",
headers: {"Authorization": "Bearer " + service.getAccessToken()},
muteHttpExceptions: true,
payload: JSON.stringify({"message": {"raw": draftBody}})
};
var resp = UrlFetchApp.fetch("https://www.googleapis.com/gmail/v1/users/me/drafts", params);
Logger.log(resp)
}