微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Gmail Api / GmailApp Apps Script 当有人回复邮件时,有没有办法标记邮件?

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?