Email Anhang per Apple Script automatisch speichern?

matthias321

Jonagold
Mitglied seit
16.11.12
Beiträge
23
Hallo,

hast du vielleicht noch eine Idee für mich? Ich komme aktuell nicht wirklich weiter.

Gruß Matthias
noch ein kleine Info.
wenn beispielsweise 4 Emails zur gleichen Zeit ankommen, speichert er nur von einer
Email den Anhang als 4 Datein mit den Namen

Rechnung zur Bestellung 49850
Rechnung zur Bestellung 49850 (1)
Rechnung zur Bestellung 49850 (2)
Rechnung zur Bestellung 49850 (3)

Bei jeder Datei handelt es sich allerdings um die gleiche Rechnung.
Ich hoffe es ist einigermaßen verständlich.

Gruß Matthias
 
Zuletzt bearbeitet:

sedna

Raisin Rouge
Mitglied seit
22.10.08
Beiträge
1.181
Hallo Matthias,

das Ergebnis kann ich nicht nachvollziehen. Das im Beitrag #17 gepostete Skript hängt jedem Anhang (!) eine laufende Nummer an (das könnte man noch schöner machen, wäre aber komplizierter und damit mit Aufwand verbunden *gg)

Sprich, folgende Datei kann es so gar nicht geben:
Rechnung zur Bestellung 49850

Es müsste so aussehen:
Rechnung zur Bestellung 49850_1

Bei gleichem Betreff in unterschiedlichen Emails:
Rechnung zur Bestellung 49850_1
Rechnung zur Bestellung 49850_2
Rechnung zur Bestellung 49850_3
Rechnung zur Bestellung 49850_4


Oder bei unterschiedlichen Betreffs und mehreren Rechnungen in einer Email:
Rechnung zur Bestellung 49850_1
Rechnung zur Bestellung 49851_1
Rechnung zur Bestellung 49852_1
Rechnung zur Bestellung 49853_1
Rechnung zur Bestellung 49853_2


Kopiere noch mal den Code und erstelle ein neues Skript

Gruß
 

matthias321

Jonagold
Mitglied seit
16.11.12
Beiträge
23
Hallo,

sorry, du hast natürlich recht. Die Dateien sehen wie folgt aus:

Rechnung zur Bestellung 49850_1
Rechnung zur Bestellung 49850_2
Rechnung zur Bestellung 49850_3
Rechnung zur Bestellung 49850_4

Die Datei ist aber immer die gleiche.

Nochmal zur Erklärung. Der Betreffe ist immer ein anderer. Er unterscheidet sich immer von der Bestellnummer.

Jede Email hat immer eine eigene Rechnung. Der Betreff jeder Email heißt "Rechnung zur Bestellung_(Bestellnummer).

Leider klappt dazu nicht der Code.

Schöne Grüße
Matthias
 

sedna

Raisin Rouge
Mitglied seit
22.10.08
Beiträge
1.181
Hallo,

Code:
using terms from application "Mail"
    on perform mail action with messages theMessages for rule theRule
        
        -- Lege hier den Zielordner fest
        set destFolder to "macOS:Users:usw.usw:"
        
        tell application "Mail"
            
            repeat with oneMessage in theMessages
                set x to 1
                set theSubject to subject of oneMessage
                tell me
                    set theSubject to do shell script "echo " & quoted form of theSubject & " | sed 's/:/–/g'"
                end tell
                
                repeat with oneAttachment in mail attachments of oneMessage
                    tell me
                        set _exists to true
                        repeat until _exists is false
                            try
                                alias (destFolder & theSubject & "_" & x & ".pdf")
                                set x to x + 1
                            on error
                                set _exists to false
                            end try
                        end repeat
                    end tell
                    
                    set theName to theSubject & "_" & x & ".pdf"
                    save oneAttachment in file (destFolder & theName)
                end repeat
            end repeat
        end tell
        
    end perform mail action with messages
end using terms from
 

sedna

Raisin Rouge
Mitglied seit
22.10.08
Beiträge
1.181
Hallo,

gehen wir der Sache auf den Grund!

1) Welches macOS läuft auf dem Mac?
Falls Big Sur, so kann ich schon mal sagen, dass es in puncto AppleScript (leider) voll von Bugs ist!

2) Es kann sein, dass die Regel bug-bedingt einfach nicht mit dem "do shell script" klar kommt.
Falls es immer um den gleichen Absender mit den gleichen Betreffs geht, kann man den Block sowieso rausnehmen.
Entferne:
Code:
         tell me
                    set theSubject to do shell script "echo " & quoted form of theSubject & " | sed 's/:/–/g'"
                end tell
3) Erstelle folgendes Skript, wähle dann beliebig viele der betreffenden Emails in Mail aus und lasse das Skript im Skripteditor laufen. Stelle als Skriptergebniss im Skript-Fenster unten "Antworten" ein. Überprüfe im Zielordner, ob alle Anhänge wie gewünscht gesichert werden.

Code:
tell application "Mail"

    -- Lege hier den Zielordner fest
    set destFolder to "macOS:Users:usw.usw:"

    set theMessages to selection
    
    repeat with oneMessage in theMessages
        set x to 1
        set theSubject to subject of oneMessage
        
        repeat with oneAttachment in mail attachments of oneMessage
            tell me
                set _exists to true
                repeat until _exists is false
                    try
                        alias (destFolder & theSubject & "_" & x & ".pdf")
                        set x to x + 1
                    on error
                        set _exists to false
                    end try
                end repeat
            end tell
            
            set theName to theSubject & "_" & x & ".pdf"
            save oneAttachment in file (destFolder & theName)
        end repeat
    end repeat
    
end tell
Gruß
 

matthias321

Jonagold
Mitglied seit
16.11.12
Beiträge
23
Hallo,

nochmal vielen Dank, das du dir soviel Zeit für mein Problem nimmst.

Als zuerst einmal habe ich die aktuellste Version Big Sur drauf 🤔

Ich hab nun dein Script manuell ausgeführt ohne Email Regeln und siehe da, nun
werden alle Anhänge in den Ordner korrekt gespeichert.

Nun habe ich den Script wieder in meine Emailregel integriert und dort funktioniert es
wieder nicht.

Der Absender ist übrigens immer gleich bei allen Emails.

Es ist wirklich sehr merkwürdig.

Schöne Grüße
Matthias
 

sedna

Raisin Rouge
Mitglied seit
22.10.08
Beiträge
1.181
Tja, dann kann man wohl nix machen :(
Immerhin kannst du die Anhänge mit dem Skript schnell in den Ordner laden.

Funktioniert die Regel denn jetzt, wenn du sie (wie schon mal in #11 beschrieben) manuell anwendest?
 

matthias321

Jonagold
Mitglied seit
16.11.12
Beiträge
23
Hallo,

ok, aber dann bräuchte ich ja nicht unbedingt das Script, da ich ja alle Email auch so markieren kann und über "Dateianhang sichern..." die Datein in den jeweiligen Ordner speichern kann.
Echt schade, das dieses über Apple nicht funktioniert. Über Windows ging dieses problemlos.

Falls du vielleicht noch eine andere Idee hast, wäre es schön wenn du dich nochmal bei mir melden könntest.
Aber trotzdem vielen Dank für dein großes bemühen. 👍 👍 👍 👍 👍 👍 👍