有时,在运行插件时,它将引发以下错误:
附加组件出错。
运行时错误。找不到方法moveThreadToInbox((class))。 [第102行,function:,file:Code]
其他时候,它工作得很好。
我已尝试在演示here
中处理Google的处理方式但是仍然会出现相同的错误。实际上,考虑一下……这可能不是最好的方法。由于查询可能返回具有相同字符串的主题。因此,我然后尝试将ID用于新邮件,但这对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,删除旧邮件,然后在收件箱中移动新邮件。正如我所说,它有时会起作用,所以我一直试图找出为什么它在不起作用时不起作用的原因!
如果任何人都可以将我指向正确的方向,那将是很棒的事情,并且可以挽救我的头发,使我过早秃顶!
答案 0 :(得分:0)
您可能应该在此var newMailSearch = GmailApp.search(query);
和此
GmailApp.moveThreadToInbox(newMailSearch[0]);
之间进行某种类型的测试,以确保返回的内容满足该方法的逼近值和/或类型要求。