Автоответчик AppleScript с увеличивающимся числом

2

Я пытаюсь создать автоответчик, который будет отвечать на любое письмо с определенного адреса примерно так:

Спасибо за ваше письмо.
Ваш номер # 0000042.

Число должно увеличиваться каждый раз при отправке одного из этих писем.

Посмотрев в интернете на дорогие решения, похоже, что лучше всего автоматизировать что-то с помощью AppleScript - возможно, сохранив последний номер в файле и увеличивая его.

Как будет выглядеть такой скрипт?

Тео С
источник
Что у тебя до сих пор? Вы ищете весь сценарий или просто увеличиваете «Ваш номер # 0000042». часть сценария?
user3439894
@ user3439894 Весь сценарий или хотя бы основы.
Тео С
Я расширил свой ответ полным сценарием.
MikeLimaOscar

Ответы:

1

Простым способом реализации автоматического увеличения будет использование переменной свойства AppleScript :

property responseNumber : 42

Значения свойств «запоминаются» между вызовами вашего скрипта. Итак, в вашем обработчике просто используйте:

set responseNumber to responseNumber + 1

Однако значение свойства сбрасывается при компиляции AppleScript. Поэтому вам нужно будет вручную изменить значение 1in property responseNumber : 1на последнее, когда вы изменили сценарий. Поэтому использование файла является более надежным методом, а использование файла настроек для записи текущего значения свойства означает, что вы можете использовать встроенные функции.

Базовый пример AppleScript (без проверки ошибок и тестирования, так как я не использую Mail ), чтобы дать вам идею:

property responseNumber : 42
property prefFileName : "your.domain.in.reverse.emailresponder.plist"

on perform_mail_action(theData)
    my readPrefs()
    tell application "Mail"
        set theSelectedMessages to |SelectedMessages| of theData
        repeat with theMessage in theSelectedMessages
            set theReply to reply theMessage
            set the content of theReply to "Thank you for your email." & return & "Your number is #" & (zeroPad of me given value:responseNumber, minimumDigits:7) & "." & return
            send theReply
            set responseNumber to responseNumber + 1
        end repeat
    end tell
    my writePrefs()
end perform_mail_action

on zeroPad given value:n, minimumDigits:m : 2
    set val to "" & (n as integer)
    repeat while length of val < m
        set val to "0" & val
    end repeat
    return val
end zeroPad

on readPrefs()
    -- Get the path to the property list
    set plPath to (path to preferences folder as text) & prefFileName
    tell application "System Events"
        set plContents to contents of property list file plPath
        set responseNumber to value of property list item "ResponseNumber" of plContents
    end tell
end readPrefs

on writePrefs()
    -- Get the path to the property list
    set plPath to (path to preferences folder as text) & prefFileName
    tell application "System Events"
        set the value of property list item "ResponseNumber" of contents of property list file plPath to responseNumber
    end tell
end writePrefs

Сохраните этот скрипт в своей ~/Library/Application Scripts/com.apple.mailпапке и настройте почтовое правило для его вызова.

Вам также необходимо создать соответствующий файл plist в вашей ~/Library/Preferencesпапке со следующим содержимым:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>ResponseNumber</key>
    <integer>42</integer>
</dict>
</plist>
MikeLimaOscar
источник