Auto-responder AppleScript con numero progressivo

2

Sto provando a creare un risponditore automatico che risponda a qualsiasi email da un determinato indirizzo con qualcosa del tipo:

Thank you for your email.
Your number is #0000042.

Il numero dovrebbe aumentare ogni volta che invia una di queste e-mail.

Dopo aver consultato online le soluzioni costose, sembra che la mia migliore scommessa sia quella di automatizzare qualcosa con AppleScript, magari salvando l'ultimo numero in un file e incrementandolo.

Che aspetto avrebbe un simile script?

    
posta Theo C 02.11.2017 - 12:48
fonte

1 risposta

2

Un modo semplice per implementare l'incremento automatico sarebbe utilizzare un Variabile di proprietà AppleScript :

property responseNumber : 42

I valori delle proprietà sono "ricordati" tra le chiamate al tuo script. Quindi, nel tuo gestore usa semplicemente:

set responseNumber to responseNumber + 1

Tuttavia, il valore della proprietà viene ripristinato ogni volta che viene compilato AppleScript. Dovresti quindi modificare manualmente il 1 in property responseNumber : 1 con l'ultimo valore quando hai cambiato lo script. L'utilizzo di un file è quindi un metodo più affidabile e l'utilizzo di un file di preferenze per registrare il valore della proprietà corrente significa che è possibile utilizzare la funzionalità integrata.

Un esempio di base di AppleScript (senza controlli di errore o test, dal momento che non uso Mail ), per darti un'idea:

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

Salva questo script nella tua cartella ~/Library/Application Scripts/com.apple.mail e configura una regola Mail per chiamarla.

Dovrai anche creare il file plist appropriato nella tua cartella ~/Library/Preferences con i seguenti contenuti:

<?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>
    
risposta data 02.11.2017 - 14:22
fonte

Leggi altre domande sui tag