Dialog Box "existiert bereits" stoppt das Script nicht

jodomac39

Aktives Mitglied
Thread Starter
Dabei seit
20.01.2004
Beiträge
144
Reaktionspunkte
8
Gruß zum Sonntag mit einer Frage:

Ein applescript, das mehrere Emails aussucht und als PDF-Files abspeichert, produziert eine Dialog Box, wenn das PDF-File schon am Speicherort existiert, läuft aber weiter!

Ein error wird dadurch nicht produziert (try on error end try )
Wie kann ich die Dialog Box abfangen, um das PDF-File woanders zu speichern?

Code:
            tell application "System Events"
                tell process "Mail"
                    open item x of Auswahl_X
                    set frontmost to true
                    delay 1
                    keystroke "p" using {command down}
                    delay 1
                    repeat until exists sheet 1 of window 1
                        delay 0.5
                    end repeat
                    
                    tell sheet 1 of window 1
                        click menu button 1 of group 2 of splitter group 1 -- PDF
                        delay 5
                        click menu item 2 of menu 1 of menu button 1 of group 2 of splitter group 1 -- "Als PDF sichern…"
                        delay 2
                        keystroke "v" using {command down} -- Filename einsetzen
                        delay 2
                        try
                            key code 76 -- 'Enter' auf Nummernblock
                        on error the_error_message
                            display dialog the_error_message
                        end try
                        delay 5
                        keystroke "w" using {command down} -- Mail schließen
                        delay 5
                                                
                    end tell
                    
                end tell
            end tell
 
Wenn du den Namen des Files hast, dann prüfe vorher im AppleScript ob es existiert, dann gibts keinen Fehler.
 
Vielen Dank, MacSchrauber, diese Lösung ist mir schon klar, nur, warum läuft das Script mit der offenen Dialog Box, dem offenen Drucker-sheet und der offenen Mail auf dem Schirm einfach weiter?
Gruß Jodomac 39
 
Du steuerst ja nur eine App fern, ohne jegliche Interaktion. Das ist mMN nur eine Notlösung, wenn eine App nicht skriptbar ist.

Ich habe mit Mail noch nicht geskriptet, bin aber überzeugt, dass es als Apple App skriptbar ist.

Wenn nicht sogar rocardable. Einfach mal testen.
 
Das verstehe ich nicht.
Der angegebene Code ist nur ein Ausschnitt aus einem Mail-Script

tell application "Mail"
set Auswahl_X to (get selection)
repeat ....

... und trotz der offenen Dialog Box läuft das Script mit repeat weiter ( und produziert gegebenenfalls weitere solche Fenster!) bis zum Ende der Schleife!
Übrigens noch eine unerwartete Erfahrung:
Bei der Auswahl_X kann es sein , daß für eine ausgewählte Mail mehrere Kopien mit verschiedenen ID Nummern in der Auswahl erscheinen, was eben wiederholt zu dem oben beschriebenen Phänomen des ... existiert bereits führte.
Gruß Jodomac 39
 
Du interagierst nicht, sondern sagst SystemEvents drücke Taste dies und Taste das.

Das ist für mich kein Skripten, sondern Apps fernsteuern. Für die gewünschte Aktion gibt es bestimmt direkte Funktionen.

Mail in SkriptEditor öffnen und den Befehlssatz anschauen. Warum die App jetzt weiterläuft kann zumindest ich dir nicht sagen.
 
Hallo,

ich verstehe den Auszug aus dem Skript nicht ganz...
Wenn eine Datei gleichen Namens im Zielverzeichnis existiert, gibt das System doch eine Warnung in Form einer "Ersetzen - Abbrechen" Box aus.
"Enter" kann also immer gedrückt werden. Dein "try" bezieht sich aber auf den Versuch "enter" zu drücken....
Soll der Versuch abgebrochen werden, die Email zu speichern, wenn sie schon als PDF existiert?
Dann könnte man vorher im Zielverzeichnis schauen, ob das der Fall ist und den Versuch gar nicht erst starten...

AppleScript:
set _dest to (path to desktop folder as text) -- oder wo auch immer
set _filename to "xyz.pdf"
set _target to _dest & _filename
try
    _target as alias
    -- GUI Skript starten
end try

Tatsächlich geht das Speichern einer PDF wohl nur mit einem GUI-Skript.
Allerdings doch wesentlich einfacher, wenn man den Menüpunkt Mail->Ablage->Als PDF exportieren… skripten würde, oder übersehe ich da etwas?

Wenn dein get selection mehrere IDs anzeigt, sind auch mehrere ausgewählt ... (z.B. gruppierte Emails)

Gruß
 
Zurück
Oben Unten