我想让电子邮件以相反的顺序排列(首先是旧的电子邮件),但这在Gmail.So中是不可能的,我正在考虑编写一个应用程序脚本。
我要讲的逻辑是:
)
有人能用不同的方法帮我吗?谢谢
发布于 2021-04-09 14:43:30
下面是我如何成功地更改线程顺序的方法。
注意:=> addLabel()到线程/消息而不是是否改变线程的顺序=> createDraftReply() *确实改变了线程的顺序
因此,如果您想用标签更改线程的顺序,我发现的唯一调整就是在数组中对is进行排序,然后通过线程调用createDraftReply()。这将导致线程按所需的顺序排列。Unfortunately,,您还将在每个线程的末尾看到一个草稿消息。
有更好的主意吗?这是我的代码:
// 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;
}
}https://stackoverflow.com/questions/66972939
复制相似问题