ich habe ein „kleines“ Problem bei folgender Situation. Ein Script zum importieren von XML in InDesign welches auf meinem Mac (OS X 10.4, InDesign CS2 4.0) ohne Probleme läuft, hat leider auf einem weiteren Mac (OS X 10.4, InDesign CS2 4.0.4) so seine Schwierigkeiten.
Die Stelle im Script wo ich die Importanweisung gebe sieht (stark vereinfacht) wie folgt aus:
Auf meinem Mac wird im Falle eines Importfehlers das Dokument geschlossen und die Routine läuft weiter …
Auf dem anderen Mac stürzt bei einem Importfehler InDesign in Toto ab und ein Dialog zum Senden eines Berichts poppt auf.
Mein Frage: Kann man im Falle eines Absturzes diesen Bericht-senden-Dialog unterdrücken? <- via AppleScript?
Gut, dass Du die Lösung des Problems gefunden hast. Ich habe mich bisher noch nicht mit XML befasst, werde mich aber bestimmt bald einmal damit auseinandersetzen müssen.
Deshalb interessiert mich: Was war denn im Code nicht sauber?
das eigentliche Script ist mit all seinen Aufgaben (Suchen und Ersetzen, Logg.txt schreiben, Auslesen der XML-Dateinamen zum erzeugen der richtigen INDD-Daten, Ebenen ein-/ausblenden, leere Grafik- und Textrahmen löschen, Spaltenumbruch bei mehrspaltigen Textrahmen, … usw.) im Laufe der letzen Monate auf ca. 8 DIN A4 Seiten gewachsen.
Drum hier der stark vereinfachte Aufbau des (Drop-)Scripts:
Sollte beim Import von XML ein Fehler auftauchen (zu 99 % fehlt bei mir dann ein Bild, welches durch das XML-Dokument zugewiesen wird) dann soll er die „Arbeit“ an der gerade geöffneten Satzdatei beenden.
ich werde mich nie mit Konstrukten anfreunden können, in welchen sich der ganze Ablauf innerhalb einer tell-application-"Finder"-Schleife befindet. Inklusive Aufrufen von andern Programmen. Wie hier InDesign. Zudem braucht es hier den Finder gar nicht. Siehe unten.
Und bei einem Problem wird dem aktiven InDesign-Dokument gesagt, es solle sich selber schliessen. Geht das? Ja, es geht, weil Satzdatei eine Referenz ist.
Statt der Variablen XML_OK die Werte 1 oder 2 zuzuweisen, verwende ich gerne true oder false. Es macht zwar keinen Unterschied. Benötigt einzig weniger Zeilen. und weniger A4-Seiten. ;-) --- on open meineXMLfiles repeat with i from 1 to count of meineXMLfiles set aktXMLfile to (item i of meineXMLfiles) as alias openDocument(aktXMLfile) end repeat [color=#0000FF]end open
on[/color] openDocument(aktXMLfile) tell application "Adobe InDesign CS2" open aktXMLfile
set Satzdatei [color=#0000FF]to active document tell[/color] Satzdatei
set XML_OK [color=#0000FF]to false try import XML from[/color] aktXMLfile set XML_OK [color=#0000FF]to true end try
if[/color] XML_OK then -- mache Dies und Das [color=#0000FF]else close[/color] Satzdatei [color=#0000FF]saving no end if
end tell end tell end[/color] openDocument ---
Man könnte aber auch das true oder false weglassen und direkt handeln. Mit return kehrt man in den on-open-Handler zurück: --- on open meineXMLfiles repeat with i from 1 to count of meineXMLfiles set aktXMLfile to (item i of meineXMLfiles) as alias openDocument(aktXMLfile) end repeat end open
on openDocument(aktXMLfile) tell application "Adobe InDesign CS2" try open aktXMLfile on error return end try
try tell document 1 import XML from aktXMLfile end tell on error close document 1 saving no return end try