Как запустить AppleScript в правиле Apple Mail?

В 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


person dk9000    schedule 17.01.2020    source источник


Ответы (1)


Статья 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
person Jerry Stratton    schedule 17.01.2020