对不起,我不是程序员,
我正在使用这个 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]);
}
}