Jam*_*rke 6 messages google-apps-script
我正在尝试阅读我的 gmail 帐户中的所有电子邮件 - 收件箱、已发送邮件、草稿邮件、垃圾邮件、带标签的电子邮件、存档邮件等。我可以在没有垃圾邮件的情况下生活,但我想要其他一切。
(以下所有示例都使用 try {} catch {} 以避免出现空标签等错误。)
我试过了
for (var i=StartLabel; i<=EndLabel; i++)
{
var label = labels[i].getName();
// get all messages, then join them into a single dimension array
var messages = GmailApp.getMessagesForThreads(GmailApp.search("label:" + label))
.reduce(function(a, b) {return a.concat(b);});
CountByLabels += messages.length;
}
Run Code Online (Sandbox Code Playgroud)
这给了我标签中的所有东西(我认为),但没有其他东西。
我尝试了其他事情,以获取收件箱(与上述内容结合)或所有电子邮件
var messages = GmailApp.getMessagesForThreads(GmailApp.getInboxThreads()).reduce(function(a, b) {return a.concat(b);});
CountInbox += messages.length;
Run Code Online (Sandbox Code Playgroud)
但我只得到大约 549 个结果(GMail 显示 5,478 个)。如果我添加来自 getPriorityInboxThreads 的结果,我会得到 1,829 个结果。
我试过
// get all messages, then join them into a single dimension array
var messages = GmailApp.getMessagesForThreads(GmailApp.search("(is:unread OR is:read) in:anywhere")).reduce(function(a, b) {return a.concat(b);});
CountByLabels += messages.length;
Run Code Online (Sandbox Code Playgroud)
我得到 598 个结果。我在上面的代码中尝试了不同的搜索词,例如:
是:未读 = 528 个结果
is:read = 1,037 个结果
is:read OR is:unread = 599 结果
他们都没有给出正确的数字,甚至没有给出正确的数字,顺便说一句,如果我直接在 gmail 中尝试这些搜索词,我会得到一个完全不同的、更高的结果——几千或“很多”。
我认为这与如何使用 Google App Scripts 以自定义方式检索 Gmail 电子邮件无关?因为返回的数字不是整数(例如 500)。
我假设我可以使用 getSpamThreads、getStarredThreads、getTrashThreads、getDraftMessages 来获取相关文件夹,但直到我明白为什么我只从收件箱收到一些电子邮件我不相信那些会给我一切。
任何人都可以帮忙吗?
尝试这个:
function allEmailsInLabels() {
var allLabels,i,j,L,L2,msgCount,theCount,threads,thisLabel;
msgCount = 0;
theCount = 0;
allLabels = GmailApp.getUserLabels();
L = allLabels.length;
for (i = 0; i < L; i++) {
Logger.log("label: " + allLabels[i].getName());
thisLabel = allLabels[i];
threads = thisLabel.getThreads();
//Logger.log('threads: ' + threads);
L2 = threads.length;
for (j = 0; j < L2; j++) {
msgCount = threads[j].getMessageCount();
//Logger.log('thread message count: ' + threads[j].getMessageCount());
// You could do something with threads[j] here like
// threads[j].moveToTrash();
theCount = theCount + msgCount;
};
};
//Logger.log('theCount: ' + theCount);
};
Run Code Online (Sandbox Code Playgroud)
它首先获取所有标签,然后获取线程,然后获取每个线程中的消息计数,并保持运行计数。您还需要在收件箱中获取消息,该代码不包含它们。这是文档中的示例代码,显示了基本概念:
// Log the subject lines of your Inbox
var threads = GmailApp.getInboxThreads();
for (var i = 0; i < threads.length; i++) {
Logger.log(threads[i].getFirstMessageSubject());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13858 次 |
| 最近记录: |