Gmail Api / GmailApp Apps Script 有什么方法可以在有人回复邮件时标记邮件吗?

Gmail Api / GmailApp Apps Script Is there any way to tag a message when someone is replying to it?

我们在使用同一帐户的几个人之间共享一个收件箱,有时我们会回复相同的邮件 2/3 次,我们解决了这个手动标记将要回复的邮件的问题,但如果有自动的东西。

我考虑过监控最近生成的 10 个草稿,使用草稿内部日期标记具有相同主题的邮件:

var draftDate = Gmail.Users.Drafts.get('me','r-3713120909044645691').message.internalDate

发送后删除它们并从监视队列中取消选中它们。但是我想不出别的办法。

我创建了一个 getLastMails() 函数来搜索最后 10 个 Mailthreads 中最后一条消息的标签,如果它找到任何草稿,它会将它们标记为“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);




}