Hallo topolino,
"nicht aufgeben": Das ist die einzig richtige Einstellung für einen Scripter!
Ach, das kann sehr, sehr kompliziert werden. Deshalb habe ich den umgekehrten
Weg vorgeschlagen: Das Dokument benutzen, so wie es ist und nur die Boxen
stehenlassen, welche man braucht.
Das Thema "Lernhilfen" wurde kürzlich hier schon mal angesprochen.
Im Thema "Literatur zu "AppleScript""
http://www.page-online.de/page/forum/viewthread/3049/
Es ist notwendig, sich mit den allgemeinen Grundlagen zu befassen, bevor man
ein grosses QuarkXPress- oder InDesign-Script in Angriff nimmt.
Dennoch hier schon mal eine erste Lektion.
Aufgepasst 1: Das XPress-Projekt muss zuerst manuell unter einem anderen
Namen gesichert werden, bevor das folgende Script gestartet wird.
Aufgepasst 2: Bitte nicht auf einen 100-Seiter loslassen. Das könnte
etwas dauern und weil man nicht sieht, was geschieht, könnte man
meinen, die Maschine sei eingefroren. In einem richtigen Script müsste
man eine Fortschrittsbalken einbauen, damit man sieht, wie lange man
sich noch gedulden muss.
---
tell document 1 of application "QuarkXPress 6.5"
activate
repeat with i from (count of generic boxes) to 1 by -1
if box type of generic box i is not in {picture box type, graphic box type} then
try
delete generic box i
end try
end if
end repeat
display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1
end tell
---
Und so funktioniert es:
Die erste Zeile bildet mit der letzten einen sogenannten 'tell'-Block,
innerhalb dessen sich die Befehle, welche XPress ausführen soll, befinden.
Das 'activate' bringt QuarkXPress in den Vordergrund.
Dann folgt eine Wiederholungsschleife, welche mit 'repeat' beginnt und
mit 'end repeat' endet. Normalerweise benutzt man eine solche Konstruktion:
---
repeat with i from 1 to count of generic boxes
---
... welche bedeutet: Wiederhole mit i von 1 bis zur Anzahl Boxen
Dabei wird ein automatischer Zähler benutzt, welcher bei jedem Umgang um eins
erhöht wird. Als Variablen-Name wird hier das unscheinbare 'i' eingesetzt.
Das ist ein allgemeiner Standard (i für 'iteration' = Wiederholung).
Dieser Variablen muss nach dem 'from' ein Startwert zugewiesen werden.
Und nach dem 'to' muss ein Endwert bestimmt werden.
Weil aber Boxen entfernt werden, muss die Schleife rückwärts laufen. Sonst
gerät das Script bald einmal aus dem Tritt. Deshalb wird als Startwert die
Anzahl Boxen eingesetzt und als Endwert eine '1'. Und zusätzlich muss noch
der Schrittwert definiert werden: by -1 (also minus 1 = rückwärts).
Dann kommt eine Testschleife, welche mit 'if' beginnt und mit 'end if' endet.
Es wird geprüft, ob sich der Boxentyp der aktuellen Box in der Liste
befindet. Wenn nicht, wird die Box entfernt.
Der delete-Befehl befindet sich zur Sicherheit in einem 'try'-Wickel.
Es wird versucht, die Box zu löschen. Falls dies aus irgendeinem Grund nicht
gelingt, wird eine Fehlermeldung (und ein Abbruch des Scripts) vermieden.
Normalerweise wird der Wickel mit 'on error' erweitert, damit darin eine
Zählervariable hochgezählt werden kann und man somit eine Angabe hat,
wie oft es ein Problem gegeben hat.
Soviel für heute ...
Gruss, Hans
als Antwort auf: [#421178]