Как запустить AppleScript на Apple Mail Rule? - PullRequest
0 голосов
/ 17 января 2020

В Apple Mail я зашел в «Настройки> Правила» и создал правило для запуска AppleScript (скриншот прилагается)

Я знаю, что это срабатывает, потому что фон входящего сообщения становится оранжевым.

Однако, похоже, что AppleScript не запускается. Я установил его, чтобы сделать простой «диалог отображения», чтобы увидеть, если он запускается, но ничего не происходит. Можете ли вы помочь мне понять, где я ошибся?

Спасибо!

Сценарий от http://preserve.mactech.com/articles/mactech/Vol.21/21.09/ScriptingMail/index.html

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

on perform_mail_action(theData)
tell application "Mail"
    set theSelectedMessages to |SelectedMessages| of theData
    set theRule to |Rule| of theData
    repeat with a from 1 to count theSelectedMessages
        -- Process the current message
        display dialog "did this work?"
    end repeat
end tell end perform_mail_action

Apple Mail Rule

1 Ответ

0 голосов
/ 17 января 2020

Статья MacTech может быть устаревшей. Страницы Apple по теме, которую я смог найти, ничего не упоминают об этом обработчике, с подчеркиванием, только с пробелами.

Первое подразумевает, что вам вообще не нужен обработчик для вашего сценария. Я подтвердил, что это правда. Следующий файл скрипта запускается при входящем сообщении и отображает диалоговое окно:

display dialog "Hello without handler"

На последней странице используется следующий формат, который я также проверил:

using terms from application "Mail"
    on perform mail action with messages caughtMessages for rule catchingRule
        display dialog "We got one!"
    end perform mail action with messages
end using terms from

Если вы используете IMAP, вы можете получить данные из входящих сообщений. Например:

using terms from application "Mail"
    on perform mail action with messages caughtMessages for rule catchingRule
        repeat with caughtMessage in caughtMessages
            try
                set mailSubject to subject of caughtMessage
                display dialog mailSubject
            on error errorString number errorNumber
                display dialog errorString
            end try
        end repeat
    end perform mail action with messages
end using terms from

Если вы используете POP, входящие сообщения недоступны; вы получите что-то вроде Can’t get «class mssg» "Incoming POP Messages" of «class mact» id "LONG-ID". Invalid index. В этом случае вы можете найти комментарии к ответ на этот вопрос полезными.

Вкратце, для получения данных от входящее сообщение в учетной записи POP, сообщение должно быть сначала перемещено в папку, отличную от папки «Входящие». Попросите правило переместить сообщение в другой созданный вами почтовый ящик, например, «Входящий триаг», и затем сценарий выполняет итерацию по всем сообщениям в этом почтовом ящике, а не по сообщениям, переданным обработчику. Например:

using terms from application "Mail"
    on perform mail action with messages caughtMessages for rule catchingRule
        --for POP messages, the rule must have already moved it into Incoming Triage
        set caughtMessages to every message of mailbox "Incoming Triage"
        repeat with caughtMessage in caughtMessages
            tell caughtMessage
                set mailSubject to subject
            end tell
            display dialog mailSubject
            move caughtMessage to mailbox "INBOX" of account 1
        end repeat
    end perform mail action with messages
end using terms from
...