Очистка папок Apple Mail с помощью JXA - PullRequest
0 голосов
/ 05 октября 2018

Я хочу написать скрипт JXA, который автоматически удаляет старые письма из моих папок.Я нашел решение, но оно очень медленное, и мне интересно, есть ли способ ускорить это.

Вот мой сценарий:

mailApp = Application("Mail");
mailApp.includeStandardAdditions = true;

var now = Date.now();

function calcDaysAge(date) {
    return ~~((now-date)/3600/24/1000) //~~((now - date) / (24*60*60*1000);
}

function deleteMessagesOf(mailbox, minDaysAge) {
    messages = mailApp.mailboxes.byName(mailbox).messages
    for (var i=messages.length-1; i>=0; i--) {
        message = messages[i]
        date = new Date(message.dateReceived())
        age = calcDaysAge(date)
        if (age > minDaysAge) {
            message.delete()
        }
    }
}

// delete mails older than 7 days from my Cronjobs mailbox.
deleteMessagesOf("Cronjobs", 7)

1 Ответ

0 голосов
/ 05 октября 2018

Только что нашел ответ на похожую проблему.Кажется, это работает намного лучше, но все еще может столкнуться с тайм-аутом, когда требуется удалить большое количество писем:

mailApp = Application("Mail");
mailApp.includeStandardAdditions = true;

function deleteMessagesOf(mailbox, minDaysAge) {
    var cutoffDate = new Date(Date.now() - minDaysAge * 60 * 60 * 24 * 1000);
    messages = mailApp.mailboxes.byName(mailbox).messages.whose({ dateReceived: { '<': cutoffDate } })
    if (messages.length > 0) {
        mailApp.delete(messages)
    }
}

deleteMessagesOf("Cronjobs", 7)
...