抱歉,我不是程序员,
我正在使用这个gmail应用程序脚本(CLEANINBOX),它在浏览器中运行良好,可以保持收件箱清洁。 因为我需要同时使用INBOX应用程序(移动设备)和GMAIL应用程序(桌面),我需要实现此脚本,以避免INBOX中的PINNED消息得到满足。
我在IF序列中插入了一个条件,它不起作用 经过一段时间的努力,我意识到(如果我错了,请纠正我),以下代码无法正常工作,因为以下代码!thread.getLabels()=='PINNED')不是BOOLEAN
有人能指出我正确的代码吗?
function cleanInbox() {
var threads = GmailApp.getInboxThreads();
for (var i = 0; i < threads.length; i++) {
var thread=threads[i];
if (!thread.hasStarredMessages() && !thread.isUnread() && !thread.getLabels()=='PINNED') {
GmailApp.moveThreadToArchive(threads[i]);
}
}
}
答案 0 :(得分:1)
好的,那就更容易预料......
我只需要缩小要使用的线程数量,我只是将它们排除在&#34;固定&#34;之后。标签
var threads = GmailApp.search(&#39; in:inbox -label:pinned&#39;)
解决
感谢输入
答案 1 :(得分:0)
语句!thread.getLabels()=='PINNED'
是布尔值(因为操作数==输出true或false)。我认为您的问题是thread.getLabels()
没有返回字符串,因此永远不会等于'PINNED'
编辑:
getLabels()
方法返回值为GmailLabel []。您可以通过添加以下代码来迭代标签并检查您的状况:
for (var i = 0; i < threads.length; i++) {
var thread=threads[i];
if (!thread.hasStarredMessages() && !thread.isUnread()) {
var labels = thread.getLabels();
var isPinned = false;
for (var j = 0; i < labels.length; i++) {
if (labels[j].getName() == "PINNED"){
isPinned = true;
break;
}
if (!isPinned){
GmailApp.moveThreadToArchive(threads[i]);
}
}