Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Applescript "Drucken als PDF"

Applescript "Drucken als PDF"

mk27ja95
mk27ja9508.11.1321:59
Hallo,
Ich weiss das das Thema schon einmal vor Jahren behandelt wurde.

Ich kenne mich leider nicht aus und möchte gerne eine Mail die ich bekommen habe als PDF automatisch ausgedruckt bekommen (Bestellsystem). Leider ist ein Fehler drin im Script

wer kann mir bitte helfen

property prog_name : "Mail"
property Sichern : "Sichern"
property keepOrSkip : "Ersetzen" -- "Abbrechen

tell application "System Events"
tell application process prog_name
set frontmost to true
keystroke "p" using {command down}
repeat until window 1 exists
delay 0.1
end repeat
click menu button "PDF" of sheet 1 of window 1
click menu item 2 of menu 1 of menu button "PDF" of sheet 1 of window 1
repeat until window Sichern exists
delay 0.1
end repeat
click button Sichern of window Sichern
if exists sheet 1 of window 1 then click button keepOrSkip of sheet 1 of window Sichern
end tell
end tell
0

Kommentare

söd knöd08.11.1322:12
Ich bin mir ziemlich sicher das man das einfach mit Automator erledigen könnte, ganz ohne Applescript Wissen. Allerdings sitze ich gerade nicht am Mac und kann das testen.
0
mk27ja95
mk27ja9508.11.1322:19
hab da nix gefunden!
0
söd knöd08.11.1322:33
Ich schau da später auch mal nach. Kann mich aber in der Tat irren. Aber eine Frage, sind das Mails die immer den Gleichen Betreff haben oder alle an eine Adresse. Ich bin mir sicher das ich da mal was mit Automator gemacht habe. War aber etwas umständlich dafür aber für Deppen wie mich ohne Codezeilen.
0
mk27ja95
mk27ja9508.11.1322:46
Der Betreff ist immer "Neue Bestellung"
0
söd knöd08.11.1322:58
Okay ich melde mich spätestens morgen.
0
söd knöd08.11.1323:43
Sorry so wie ich es in Erinnerung hatte geht es leider nicht mit Automator. Mit dem Script kann ich dir leider nicht helfen Falls ich doch noch ein eLösung finde melde ich ich wieder.
0
mk27ja95
mk27ja9509.11.1312:35
Keiner der ne Lösung weiss ?
0
Lyhoo
Lyhoo09.11.1314:07
property prog_name : "Mail"
property Sichern : "Sichern"
property keepOrSkip : "Ersetzen" -- "Abbrechen

tell application "System Events"
    tell application process prog_name
        set frontmost to true
        keystroke "p" using {command down}
        repeat until sheet 1 of window 1 exists
            delay 0.1
        end repeat
        click menu button "PDF" of sheet 1 of window 1
        click menu item 2 of menu 1 of menu button "PDF" of sheet 1 of window 1
        repeat until sheet 1 of sheet 1 of window 1 exists
            delay 0.1
        end repeat
        click button Sichern of sheet 1 of sheet 1 of window 1
        if exists sheet 1 of sheet 1 of sheet 1 of window 1 then click button keepOrSkip of sheet 1 of sheet 1 of sheet 1 of window 1
    end tell
end tell
0
Lyhoo
Lyhoo09.11.1314:33
Ein Paar Anmerkungen:

Der Hauptfehler war, dass Du die einzelnen sheets nicht angegeben hast. (Ein schönes Programm um die UI Elemente zu lesen ist der UI Browser)

Das Script sagt nicht, wohin gesichert werden soll. Im Einfachsten Fall 'keystroke "d" using command down' einfügen bevor der Button Sichern gedrückt wird. Man kann aber auch einen beliebigen anderen Ort festlegen.

Das Script sagt nicht, welche Mail gesichert werden soll. Es wird die gerade angezeigte Mail gesichert. Auch hier ist Abhilfe möglich.

Das Script funktioniert nur wenn Mail schon läuft. ('tell app "Mail" to activate' am Anfang einfügen.)
0
mk27ja95
mk27ja9509.11.1316:40
Ich habe selber keine Ahnung davon,
eigentlich möchte ich nur eine ankommende Mail mit dem Betreff "Neue Bestellung" ausdrucken.
0
Lyhoo
Lyhoo09.11.1319:12
Ausdrucken oder als PDF sichern? Oder beides?

Ich würde das Problem über eine Mail-Regel lösen. Dazu muss das Script in Deiner Library : Application Scripts : com.apple.mail liegen. (Das Original, kein Alias!)

In Mail eine neue Regel erstellen: Einstellungen Regeln Regel hinzufügen.
Einstellen (oben): Betreff ist "Neue Bestellung"
und unten: Applescript ausführen. Die Scripte im richtigen Ordner werden im Popup-Menü angezeigt. (Man kann den Ordner mit dem untersten Menüpunkt im Finder öffnen.)



Das Script druckt auf dem Standarddrucker mit Standardeinstellungen:
using terms from application "Mail"
    on perform mail action with messages dieMails for rule theRule
        tell application "Mail"
        
            repeat with eineMail in dieMails
                set MailFenster to open eineMail
                
                tell application "System Events"
                    tell application process "Mail"
                        keystroke "p" using command down
                        delay 1
                        keystroke return
                    end tell
                end tell
                
                close window 1
            end repeat
            
        end tell
    end perform mail action with messages
end using terms from



dieses sichert als PDF auf dem Schreibtisch. (Achtung wie in Deinem Original eingestellt werden alte Dateien beim Sichern überschrieben!)
using terms from application "Mail"
    on perform mail action with messages dieMails for rule theRule
        tell application "Mail"
            
            repeat with eineMail in dieMails
                set MailFenster to open eineMail
                
                tell application "System Events"
                    tell application process "Mail"
                        set frontmost to true
                        keystroke "p" using {command down}
                        repeat until sheet 1 of window 1 exists
                            delay 0.1
                        end repeat
                        click menu button "PDF" of sheet 1 of window 1
                        click menu item 2 of menu 1 of menu button "PDF" of sheet 1 of window 1
                        repeat until sheet 1 of sheet 1 of window 1 exists
                            delay 0.1
                        end repeat
                        keystroke "d" using {command down}
                        click button "Sichern" of sheet 1 of sheet 1 of window 1
                        if exists sheet 1 of sheet 1 of sheet 1 of window 1 then click button "Ersetzen" of sheet 1 of sheet 1 of sheet 1 of window 1
                    end tell
                end tell
                delay 1
                close window 1
            end repeat
            
        end tell
    end perform mail action with messages
end using terms from
0
mk27ja95
mk27ja9509.11.1320:30
Super danke. Eine frage noch. was müsste man machen damit er nur die neuste und nicht alle druckt. sonst würden ja bei jeder Bestellung alle immer wieder neu ausgedruckt.
0
Lyhoo
Lyhoo09.11.1320:50
mk27ja95
Super danke. Eine frage noch. was müsste man machen damit er nur die neuste und nicht alle druckt. sonst würden ja bei jeder Bestellung alle immer wieder neu ausgedruckt.
Ups. Ist ja komisch. kann ich bei mir nicht nachvollziehen. Ich schau morgen nochmal.
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.