Иногда при запуске аддон выдает следующую ошибку:
Ошибка надстройки.
Ошибка выполнения.Не удается найти метод moveThreadToInbox((класс)). [строка 102, функция:, файл: код]
В остальное время работает отлично.
Я попытался справиться с этим так, как это делает Google в демоверсии здесь
Но все равно получайте ту же ошибку. На самом деле, если подумать... это, вероятно, не лучший способ сделать это. Поскольку запрос может вернуть тему с той же строкой. Затем я попытался использовать идентификатор для новой почты, но это не очень хорошо работало с moveThreadToInbox
.
Код и сообщения об ошибках приведены ниже:
Строка кода, на которую ссылается ошибка: GmailApp.moveThreadToInbox(newMailSearch[0]);
Полный раздел кода:
function editThreadSubject(e) {
var accessToken = e.messageMetadata.accessToken;
GmailApp.setCurrentMessageAccessToken(accessToken);
var newSubject = e.formInputs.newSubject;
var firstMessage = GmailApp.getMessageById(e.messageMetadata.messageId)
.getThread()
.getMessages()[0];
var oldSubject = firstMessage.getSubject();
var thread = GmailApp.getMessageById(e.messageMetadata.messageId).getThread();
thread.getMessages().forEach(function(message) {
GmailApp.setCurrentMessageAccessToken(accessToken);
var messageId = message.getId();
var email = getEmail(messageId, accessToken);
var unencoded = Utilities.newBlob(
Utilities.base64DecodeWebSafe(email.raw)
).getDataAsString();
var updatedEmail = unencoded.replace(
"Subject: " + oldSubject,
"Subject: " + newSubject
);
email.raw = Utilities.base64EncodeWebSafe(updatedEmail);
var newMail = Gmail.Users.Messages.import(
{
raw: email.raw
},
"me",
Utilities.newBlob(email, "message/rfc822"),
{
deleted: false,
internalDateSource: "dateHeader",
neverMarkSpam: true,
processForCalendar: false
}
);
var newMailId = newMail.id;
var query = ["Subject:" + newSubject];
var newMailSearch = GmailApp.search(query);
GmailApp.moveThreadToInbox(newMailSearch[0]);
Gmail.Users.Messages.remove("me", messageId);
});
var notification = CardService.newNotification().setText(
"The subject has been updated"
);
var actionResponse = CardService.newActionResponseBuilder()
.setNotification(notification)
.setStateChanged(true)
.build();
return actionResponse;
}
Он должен вставить новую почту в Gmail, удалить старую почту и переместить новую почту в папку «Входящие». Как я уже сказал, иногда это работает, поэтому я застрял, пытаясь понять, почему это не работает, когда это не так!
Если бы кто-нибудь мог указать мне правильное направление, это было бы фантастически и спасло бы меня от преждевременного облысения из-за того, что я выдергивал волосы!