gmail应用程序脚本cleaninbox modding

时间:2017-06-14 10:38:08

标签: google-apps-script gmail google-inbox

抱歉,我不是程序员,

我正在使用这个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]);
        }
    }
}

2 个答案:

答案 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]);
    }
}