Простым способом реализации автоматического увеличения будет использование переменной свойства AppleScript :
property responseNumber : 42
Значения свойств «запоминаются» между вызовами вашего скрипта. Итак, в вашем обработчике просто используйте:
set responseNumber to responseNumber + 1
Однако значение свойства сбрасывается при компиляции AppleScript. Поэтому вам нужно будет вручную изменить значение 1
in 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>