Иногда при запуске аддона выдается следующая ошибка:
Ошибка с надстройкой.
Ошибка времени выполнения.
Не удается найти метод moveThreadToInbox((учебный класс)).[строка 102, function:, file: Code]
В других случаях это прекрасно работает.
Я пытался справиться с этим, как это делает 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, удалить старую почту и переместить новую почту в папку «Входящие».Как я уже сказал, это работает иногда, поэтому я застреваю, пытаясь понять, почему это не работает, когда это не так!
Если кто-то может указать мне правильное направление, это было бы фантастически иизбавь меня от преждевременного облысения, потянув меня за волосы!