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

Gmail 中的 GTD:首先显示较旧的已加星标电子邮件的标签

如何解决Gmail 中的 GTD:首先显示较旧的已加星标电子邮件的标签

我想以相反的顺序为电子邮件加星标(首先是较旧的电子邮件),但这在 Gmail 中是不可能的。所以我想写一个 Apps 脚本。

我认为的逻辑是:

  1. 使用 GmailLabel 获取所有已“加星标”为标签的线程
  2. 循环所有消息以获取 GmailMessage.getDate() 并将它们放入有序数组中
  3. 邮件添加标签“GTD-Todo”...但我不确定 Gmail 是否会在按“按日期”或“上次添加标签”排序的标签显示邮件

有人有不同的方法可以帮助我吗? 谢谢

解决方法

这是我成功更改线程顺序的方法。

请注意: => addLabel() 到线程/消息不会改变线程的顺序 => createDraftReply() *确实改变了线程的顺序

因此,如果您想使用标签更改线程的顺序,我发现的唯一调整是在数组中对 ID 进行排序,然后循环遍历线程并调用 createDraftReply()。 这将导致线程按您想要的顺序排列。 很遗憾,您还会在每个话题的末尾看到一条消息草稿。

有更好的想法吗? 这是我的代码:

// Put starred threads into a label ordered "older first"
function ordinaGTD() {
  Logger.log("# Starred threads: " + GmailApp.getStarredThreads().length);
  var speciali= GmailApp.getStarredThreads(); // Get all starred threads
  var etichetta= GmailApp.createLabel("GTD"); // This label is the one I want messages ordered into
  
  // remove label to all current messages,just to clean things up
  var da_rimuovere=etichetta.getThreads(); 
  for(var k=0;k<da_rimuovere.length;k++) da_rimuovere[k].removeLabel(etichetta);

// Cicle through all starred and add IDs to an array using push()
var ordine=[];
for (var i=0; i < speciali.length; i++){
  // Prende la data del primo messaggio
  var quando = speciali[i].getLastMessageDate();
  // Crea un vettore "riga"
  // Mette la riga in tabella
  ordine.push(speciali[i].getId());
}

// Add a draft reply in each thread,the last reply is "more recent" so it will be shown first

// Crea un messaggio Draft per averli in ordine dal più recente
for(j=0;j<ordine.length;j++){
  Logger.log(ordine[j]);
  var t = GmailApp.getThreadById(ordine[j]);
  var messaggi=t.getMessages();
  Logger.log("Data primo MSG: "+messaggi[0].getDate().getTime());
  // In case there is already a draft,remove it
  var ultimo=messaggi[messaggi.length-1];
  if (ultimo.isDraft() && ultimo.getBody().indexOf("[BOZZA AD USO INTERNO:")!=null) {
    ultimo.moveToTrash();
  }
  // Set the text in the draft adding a counter to check the order :-D
  t.createDraftReply("[BOZZA AD USO INTERNO: "+j+"]");
  // Add to the label
  t.addLabel(etichetta);
  //break;
}

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。