Gmail 应用程序脚本清理收件箱修改



对不起,我不是程序员,

我正在使用这个 gmail 应用程序脚本(CLEANINBOX(,它在 roder 中效果很好,可以保持我的收件箱干净。由于我需要同时使用收件箱应用程序(移动(和GMAIL应用程序(桌面(,因此我需要实现此脚本,以避免收件箱中的固定邮件被存档。

我在 IF 序列中插入了一个条件,但它不起作用挣扎了一会儿后,我意识到(如果我错了,请纠正我(以下代码不起作用,因为 !thread.getLabels((=='固定'( 不是布尔值

任何人都可以指出我正确的代码吗?

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

好吧,这比预期的要容易得多...

只需要缩小要使用的线程数量,我只是排除了带有"固定"标签的线程

var threads = GmailApp.search('in:inbox -label:pinned'(

解决

感谢您的输入

语句

!thread.getLabels()=='PINNED'是布尔值(因为操作数 == 输出真或假(。我认为您的问题是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]);
    }
}

相关内容

  • 没有找到相关文章

最新更新