如何解决Gmail Api / GmailApp Apps Script 当有人回复邮件时,有没有办法标记邮件?
我们在使用同一个帐户的几个人之间共享一个收件箱,有时我们回复相同的邮件 2/3 次,我们解决了这个问题,手动标记将要回复的邮件,但如果有一些东西会很好是自动的。
我考虑过监控最近生成的 10 个草稿,使用草稿内部日期标记具有相同主题的邮件:
var draftDate = Gmail.Users.Drafts.get('me','r-3713120909044645691').message.internalDate
在发送后删除它们并从监控队列中取消选中它们。但我想不出别的办法。
解决方法
我创建了一个 getLastMails() 函数,它搜索来自最后 10 个邮件线程的最后一条消息的标签,如果它找到任何草稿,则将它们标记为“REPLYING”,如果它找到标记为“REPLYING”的邮件并且它们不是草稿,它删除了标签。 我现在遇到的问题是每次回复之前我都必须刷新邮件以查看标记的邮件是否有任何更改。
我不知道它在配额限制方面的效率如何。
function getLastMails() {
var mails = Gmail.Users.Messages.list('me')['messages'].forEach((message,i) => {
if (i<10) {
var messageObj = Gmail.Users.Messages.get('me',message.id)
var messageId = message.id
var labels = messageObj.labelIds
if(labels.includes("DRAFT")){
var gappMessage =GmailApp.getMessageById(messageId)
GmailApp.starMessage(gappMessage)
editLabel(message.id,"REPLYING")
//GmailApp.refreshThreads
}
if(labels.includes(getLabelByName("REPLYING",'id'))&&!labels.includes("DRAFT")) {
var gappMessage =GmailApp.getMessageById(messageId)
GmailApp.unstarMessage(gappMessage)
editLabel(message.id,'',"REPLYING")
//GmailApp.refreshThreads
}
}
})
}
function getLabel(label_){
var label = GmailApp.getUserLabelByName(label_);
return label || GmailApp.createLabel(label_);
}
function getLabelByName(name,field){
var label_ = getLabel(name);
return Gmail.Users.Labels.list('me')['labels'].filter( lab => lab.name == name )[0][field]
}
function editLabel(idMail,labelAdd = "",labelRemove = "" ) {
labelRemove = (labelRemove == "") ? [] : [getLabelByName(labelRemove,'id')];
labelAdd = (labelAdd == "") ? []: [getLabelByName(labelAdd,'id')];
Gmail.Users.Messages.modify({
"addLabelIds": labelAdd,"removeLabelIds": labelRemove
},'me',idMail);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。