AppleScript Auto-Responder mit aufsteigender Nummer

Ich versuche, einen Autoresponder zu erstellen, der auf jede E-Mail von einer bestimmten Adresse mit so etwas antwortet:

Danke für Ihre E-Mail.
Ihre Nummer ist #0000042.

Die Zahl sollte sich jedes Mal erhöhen, wenn eine dieser E-Mails gesendet wird.

Nachdem ich mir die teuren Lösungen online angesehen habe, sieht es so aus, als wäre meine beste Wahl, etwas mit AppleScript zu automatisieren - möglicherweise die letzte Nummer in einer Datei zu speichern und sie zu erhöhen.

Wie würde ein solches Skript aussehen?

Was hast du bisher? Suchen Sie nach einem ganzen Skript oder erhöhen Sie einfach nur „Ihre Nummer ist #0000042“. Teil des Drehbuchs?
@ user3439894 Ein ganzes Skript oder zumindest die Grundlagen.
Ich habe meine Antwort mit einem vollständigen Skript erweitert.

Antworten (1)

Eine einfache Möglichkeit, die automatische Inkrementierung zu implementieren, wäre die Verwendung einer AppleScript-Eigenschaftsvariablen :

property responseNumber : 42

Eigenschaftswerte werden zwischen Aufrufen Ihres Skripts "erinnert". Verwenden Sie also in Ihrem Handler einfach:

set responseNumber to responseNumber + 1

Der Eigenschaftswert wird jedoch zurückgesetzt, wenn das AppleScript kompiliert wird. Sie müssten also den 1Eingang manuell property responseNumber : 1auf den neuesten Wert ändern, wenn Sie das Skript geändert haben. Die Verwendung einer Datei ist daher eine robustere Methode, und die Verwendung einer Einstellungsdatei zum Aufzeichnen des aktuellen Eigenschaftswerts bedeutet, dass Sie integrierte Funktionen verwenden können.

Ein einfaches AppleScript-Beispiel (ohne Fehlerprüfungen oder Tests, da ich Mail nicht verwende ), um Ihnen eine Vorstellung zu geben:

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

Speichern Sie dieses Skript in Ihrem ~/Library/Application Scripts/com.apple.mailOrdner und richten Sie eine Mail- Regel ein, um es aufzurufen.

Sie müssen auch die entsprechende Plist-Datei in Ihrem ~/Library/PreferencesOrdner mit den folgenden Inhalten erstellen:

<?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>