[GastForen Programmierung/Entwicklung AppleScript Bilder neu verknüpfen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Bilder neu verknüpfen

Anonym
Beiträge gesamt: 22827

23. Okt 2004, 14:24
Beitrag # 1 von 7
Bewertung:
(2117 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
(QuarkXPress 6.1, Mac OS 10.3.5)

Lege ich eine QuarkXPress-Datei in einen Ordner mit Bildern, wird im Moment des Öffnens der "Verwendungspalette" (Reiter "Bilder") der Ordner, in dem sich Datei befindet auf passende Bilder für eventuelle  fehlende Verknüpfungen durchsucht. Werden passende gefunden, sind diese Verknüpfungen dann korrigiert, nachdem ich auf den Button "Fertig" gedrückt habe.

Diese Funktion möchte ich mir zunutze machen.

Ich möchte folgenden Arbeitsablauf per Skript erledigen, um fehlende Bildverknüpfungen automatisch zuzuweisen:

1. XPress-Datei mit fehlenden Bildverknüpfungen in einen Ordner mit allen Bilder kopieren (klappt bereits)

2. XPress Datei von dort öffnen (klappt auch)

3. Mein Problem: Fenster "Verwendung..." aus Menü "Hilfsmittel" öffnen und Button "Fertig" betätigen - oder eine Funktion auslösen, die das gleiche bewirkt.

4. Datei sichern und schließen. (klappt)

5. Datei aus dem Bildernordner erneut öffnen und die alte Fassung, mit den fehlenden Verknüpfungen mit dieser neuen, korrigierten überschreiben, Datei schließen. (klappt auch)

6. Datei im Bilderordner löschen. (klappt auch)

Die Punkte 1 und 6 werden im Skript mit

tell application "Finder"
-- Skriptaufgaben
end tell

erledigt. Die anderen mit

tell application "QuarkXPress Passport"
-- Skriptaufgaben
end tell

Mein Problem ist Punkt 3, der von XPress ausgeführt werden soll. Die Bildübersicht bei geöffnetem Dokument per "select menu" (und dann Bezeichnung oder ID) gefolgt von "of menu item" (und Bezeichnung oder ID) aufzurufen ist sehr unzuverlässig und klappt seltsamerweise nur manchmal. Ob Klartextname oder ID: Meistens gibt es eine Fehlermeldung in AppleScript.

Weiß jemand Rat? Oder gibt es eine elegantere Methode?

Zum Hintergrund: Der Vorgang muss regelmäßig durchgeführt werden. Und die manuelle Ausführung ist nervtötend und zeitraubend. Es handelt sich jedesmal um 60 Dateien, deren Namen ich in einer Liste ins Skript setze. Dann werden per "repeat" in einer Schleife die notwendigen Vorgänge für jedes Element der Liste ausgeführt. Einer der Schritte ist der Punkt 3 (oder ein Äquivalent), den ich nicht automatisiert bekomme. Mache ich nach Ablauf des Skripts eine der Dateien auf, fehlen die Bildverknüpfungen noch immer.

Wurde die Bildübersicht nicht aufgerufen und bestätigt, sind die Verknüpfungen nicht korrigiert.

Vielen Dank schon jetzt für einen Tipp.
X

Bilder neu verknüpfen

Hans Haesler
  
Beiträge gesamt: 5826

23. Okt 2004, 18:43
Beitrag # 2 von 7
Beitrag ID: #419155
Bewertung:
(2116 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael,

was geschieht, wenn Du die Bildübersicht links liegen lässt und im geöffneten Projekt eine Änderung machst?
Zum Beispiel eine Bildbox erzeugen, wieder löschen und das Projekt sichern:
---
tell application "QuarkXPress 6.1"
  tell document 1
    make picture box at beginning with properties {name:"tmp_box"}
    delete picture box "tmp_box"
  end tell
  save document 1
end tell
---

Eine andere Möglichkeit wäre, das Projekt zu öffnen, dann per Script-Dialog den Bildordner auszuwählen, und
fehlende Bilder, welche sich im Bildordner befinden, zu importieren. Vorgängig müssten aber die Attribute
gespeichert werden, damit sie wieder zugewiesen werden können.

Ich kann Dein Problem erst morgen nachzustellen versuchen, denn ich habe noch eine andere Idee. Aber ich
muss gleich weg.

Hans Haesler <hsa@ringier.ch>


als Antwort auf: [#419154]

Bilder neu verknüpfen

Anonym
Beiträge gesamt: 22827

23. Okt 2004, 20:05
Beitrag # 3 von 7
Beitrag ID: #419156
Bewertung:
(2116 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Hans,

vielen Dank. Ich habe es getestet, aber die Dokumentänderung hilft hier leider auch nichts. So ähnlich hatte ich auch schon gedacht und im Skript bei geöffnetem Dokument einfach die Hilflinien einmal ein- und wieder ausgeblendet:
[code:1]set guides showing to true
set guides showing to false[/code:1]
Das empfindet XPress ja seltsamerweise auch schon als Dokumentenänderung.

Ich bin ziemlich sicher, dass das Suchen nach passenden Links erst dann erfolgt, wenn das Fenster Verwendung geöffnet wird. Mit Klick auf "Fertig" bleiben diese neuen Links dann erhalten.

Ich warte gespannt auf Deinen angekündigten weiteren Vorschlag ...


als Antwort auf: [#419154]

Bilder neu verknüpfen

Hans Haesler
  
Beiträge gesamt: 5826

24. Okt 2004, 07:41
Beitrag # 4 von 7
Beitrag ID: #419157
Bewertung:
(2116 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael,

wenn ich es richtig verstanden habe, dann ist der Status der Bilder "Fehlt", wenn das Projekt geöffnet
wird, wenn es sich ausserhalb des Bilderordners befindet. In diesem Fall sollte bei Punkt 3 folgender Code
funktionieren (wobei 'filePath' der Pfad zum Projekt ist).

Die Ausführung des  Scripts wird durch die Verwendung des Script-Objekts beschleunigt. Der Aufruf
'do script' steht hier nach dem Script-Objekt. Meistens spielt es keine Rolle, ob das Objekt vorher oder
nachher definiert ist. Ausnahme: Wenn  es aus einem Handler heraus aufgerufen wird.
---
script updatePics
  tell application "QuarkXPress 6.1"
    open filePath as alias use doc prefs yes remap fonts no do auto picture import no
    tell document 1
      set autoPicture to auto picture import
      set auto picture import to auto import on
    end tell
    close document 1 saving yes
    open filePath as alias use doc prefs yes remap fonts no do auto picture import yes
    tell document 1
      set auto picture import to autoPicture
    end tell
    close document 1 saving yes
  end tell
end script

tell application "QuarkXPress 6.1"
  do script {updatePics}
end tell
---
Das ist die Methode, welche ich im "SommerWinterZeit"-Script (werde ich morgen ankündigen) verwende.

Das Projekt wird zweimal geöffnet. Ja: zwei Mal. Das erste Mal wird nur der "Automatische Bildimport"
(welcher auf "Mit Bestätigung" stehen sollte) gespeichert, auf "Ein" gesetzt, das Projekt wird gesichert,
geschlossen und wieder geöffnet. Jetzt sind alle Bilder aktualisiert. Der "Automatische Bildimport" wird
wieder auf die ursprügliche Einstellung zurückgesetzt, das Projekt wird gesichert und geschlossen.

In dieser Kurzfassung werden aber eventuelle individuelle Überdrucken-Einstellungen, welche den Bildern
zugewiesen sein könnten, nicht wiederhergestellt. Wenn dies ein Problem sein sollte, dann kann ich Dir
den erweiterten Code liefern.

Noch ein Ratschlag: Mit dem Finder würde ich die Datei nur verschieben. Also das 'duplicate' durch 'move'
ersetzen. Dadurch erübrigt sich der Punkt 5 und im Punkt 6 schiebt der Finder die Datei wieder zurück,
statt in den Papierkorb.

Bin gespannt, ob es bei Dir auch klappt!

Hans Haesler <hsa@ringier.ch>


als Antwort auf: [#419154]

Bilder neu verknüpfen

Anonym
Beiträge gesamt: 22827

24. Okt 2004, 11:22
Beitrag # 5 von 7
Beitrag ID: #419158
Bewertung:
(2117 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Hans,

Hut ab! Supersuper! Das klappt! Ich hatte mit "auto picture import" auch schon experimentiert, bin aber daran gescheitert, dass ich die Parameter dazu irgendwie nicht eingestellt bekam. Das ist eine große Hilfe.

Jetzt schäme ich mich fast, noch eine Frage hinterherzuschieben ... zu der Datei-Bewegung im Finder mit "move", die Du statt kopieren empfiehlst:

Ich bin mir nicht sicher, ob dieser Code richtig ist, bzw., wo der Fehler liegt. Könntest Du dieses Skript für die Hin-Bewegung (Zurück wäre dann ein weiterer Schritt) mal ansehen:
[code:1]tell application "Finder"
 activate
 -- Ordner mit den XPress-Dateien, bei denen die Verknüpfungen nicht stimmen, auswählen&#58;
 set originalOrdner to &#40;choose folder with prompt "Bitte den Ordner auswählen, der die XPress-Dateien enthält &#133;"&#41; as text
 -- Den Ordner mit den Bildern auswählen&#58;
 set bilderOrdner to &#40;choose folder with prompt "Bitte den Ordner auswählen, der alle Bilder enthält &#133;"&#41; as text
 -- Die Dateinamen
 set theList to &#123;"kapitel01.qxd", "kapitel02.qxd", "kapitel03.qxd"&#125;
 -- Dateien verschieben
 repeat with i in theList
  set sourceFile to originalOrdner & i
  set destFile to bilderOrdner & 1
  try
   move sourceFile to destFile
  end try
 end repeat
end tell
[/code:1]
Irgend etwas daran wird nicht stimmen, denn es funktioniert nicht.

Zum dem "do script", das Du verwendet hast:

Ich versuche oft, mir Erkenntnisse aus dem PDF zu holen, das Quark beiliegt. Darin ist auf Seite 16/17 auch von der Funktion "do script" die Rede. Damit hatte ich schon experimentiert. Aber es war mir ein bisschen unheimlich, weil man dann immer wenig sieht. So, wie ich es verstanden habe, beschleunigt das ein Skript stark, weil auf alle überfllüssigen Bildschirmdarstellungen verzichtet wird.

Vielen Dank für Deine Hilfe.


als Antwort auf: [#419154]

Bilder neu verknüpfen

Anonym
Beiträge gesamt: 22827

24. Okt 2004, 12:33
Beitrag # 6 von 7
Beitrag ID: #419159
Bewertung:
(2116 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ja, ja, ...

Ich habe die Skriptzeile mit dem "move" angestarrt und nochmal angestarrt. Dann habe ich mir die PDF-Dokumentation von Apple selbst nochmal angesehen. Und dann ist mir einiges aufgegangen.

Meine drei Fehler waren:

1. Ich habe vor die Quelldatei nicht geschrieben, was es ist: "file"

2. Ich habe als Ziel einen kompletten Dateipfad statt eines Ordners angegeben. Da habe ich falsch gedacht.

3. Ich habe nicht geschrieben, dass das Ziel ein "folder" ist (war es ja bis dahin auch wirklich nicht, weil ich fälschlicherweise eine Datei definert habe).

Wenn ich das korrigiere, geht es wie geschmiert:
[code:1]repeat with i in theList
  set sourceFile to originalOrdner & basisName & i
  set destFolder to bilderOrdner -- NICHT&#58;  & basisName & i
  move file sourceFile to folder destFolder
end repeat[/code:1]
So! Jetzt werde ich gleich reihenweise Dateien aktualisieren! Mit Hilfe von Hans Skriptzeilen.

Danke nochmal und einen schönen Sonntag.


als Antwort auf: [#419154]

Bilder neu verknüpfen

Hans Haesler
  
Beiträge gesamt: 5826

24. Okt 2004, 19:52
Beitrag # 7 von 7
Beitrag ID: #419160
Bewertung:
(2116 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael,

danke, den schönen Sonntag hatten wir! Deshalb musste ich Dich Deinen Selbstgesprächen überlassen &#133;
Aber es ist super, dass das Script jetzt läuft!

Zur 'do script'-Methode: Ja, diese ist nicht leicht in den Griff zu bekommen. Während es einfach ist,
die Werte von Variablen hineinzubekommen, ist es komplizierter, Resultate wieder weiteren Script-
Objekten zugänglich zu machen.

Das Entwickeln eines Scripts ist erschwert, weil bei Fehlern keine brauchbaren Rückmeldungen kommen.
Unter Mac OS 9 kommt nur die Feststellung, dass das Script die Meldung 'do script' nicht versteht.
Unter Mac OS X gibt es keine Meldungen mehr. Es geschieht einfach &#133; nichts. Meistens steht aber die
Ursache im Eventprotokoll, z.B. wenn eine Variable nicht definiert ist.

Beim Schreiben des Scripts verwende ich deshalb zuerst Handler. Und wenn alles klappt, wandle ich
sie in Script-Objekte um. Aber dann muss man alles nochmals gründlich testen. Denn wenn zum Beispiel
der Anwender per Dialog den Wert einer als 'property' definierten Variablen ändert, wird dennoch
der eingangs festgesetzte Vorgabewert angewendet. Abhilfe: Die Variable im Script-Objekt als 'global'
definieren.

Übrigens: Praktisch in jedem der Mac-OS-X-Scripts, welche ich hier: http://www.fachhefte.ch /
Link "AppleScripts" zum Download anbiete, wird die 'do script'-Methode eingesetzt.

Hans Haesler <hsa@ringier.ch>


als Antwort auf: [#419154]
X