首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gmail中的GTD :一个先有老明星邮件的标签

Gmail中的GTD :一个先有老明星邮件的标签
EN

Stack Overflow用户
提问于 2021-04-06 16:45:24
回答 1查看 39关注 0票数 0

我想让电子邮件以相反的顺序排列(首先是旧的电子邮件),但这在Gmail.So中是不可能的,我正在考虑编写一个应用程序脚本。

我要讲的逻辑是:

  1. 使用GmailLabel获取所有以“星号”作为标签的
  2. 循环所有消息以获得GmailMessage.getDate(),并将它们放入有序数组
  3. 中,向消息中添加一个新标签"GTD-ToDo“.但我不确定Gmail是否会在标签中显示“按日期”或“最后添加到标签”(

)

有人能用不同的方法帮我吗?谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-04-09 14:43:30

下面是我如何成功地更改线程顺序的方法。

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

因此,如果您想用标签更改线程的顺序,我发现的唯一调整就是在数组中对is进行排序,然后通过线程调用createDraftReply()。这将导致线程按所需的顺序排列。Unfortunately,,您还将在每个线程的末尾看到一个草稿消息。

有更好的主意吗?这是我的代码:

代码语言:javascript
复制
// 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;
}

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66972939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档