[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skript(e) auf gesamtes Buch in IDCS2 anwenden?

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Skript(e) auf gesamtes Buch in IDCS2 anwenden?

zaphodbeeblebroxx
Beiträge gesamt: 408

12. Mai 2006, 11:43
Beitrag # 1 von 5
Bewertung:
(6445 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

kann man eigentlich ein Skript für alle Dokumente eines Buches (in IDCS2/Mac) ausführen?

Ich habe mehrere Dateien, in denen ich die Verknüpfungen der Bilder aktualisieren möchte, da sich die Dateinamen der Bilder geändert haben. Dazu gibt es ja das Skript Relink files_mod.js von M. Fischer.
Die einzelnen Dateien sind in ID bereits als Buch zusammengestellt. Ich kann das Skript nun natürlich bei meinen 20 Dateien jeweils einzeln ausführen.

Einfacher wäre es allerdings, wenn das Skript nicht nur bei dem aktuell geöffneten Dokument ausgeführt werden könnte sondern für alle Dateien eines Buches?

Kennt da jemand eine Lösung?

zaphodbeeblebroxx
X

Skript(e) auf gesamtes Buch in IDCS2 anwenden?

Martin Fischer
  
Beiträge gesamt: 12783

12. Mai 2006, 12:06
Beitrag # 2 von 5
Beitrag ID: #228782
Bewertung:
(6438 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Du mußt dazu per Skript die Dateien Deines Buchs erfassen und in einer Schleife abarbeiten.
Müßte auch über "do script" gehen.
Werde das gelegentlich mal testen und die Lösung veröffentlichen, falls mir kein anderer zuvorkommt.


als Antwort auf: [#228763]

Skript(e) auf gesamtes Buch in IDCS2 anwenden?

Martin Fischer
  
Beiträge gesamt: 12783

13. Mai 2006, 10:30
Beitrag # 3 von 5
Beitrag ID: #228925
Bewertung:
(6408 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zaphodbeeblebroxx,

das folgende Skript fragt in einem Dialog nach dem Skript, das auf alle Dokumente aller offenen Bücher angewendet werden soll. Anschließend öffnet es der Reihe nach die einzelnen Dokumente der Bücher, startet das gewählte Skript und schließt das jeweils aktive Dokument wieder. Falls sich etwas geändert hat im Dokument, erfolgt eine Abfrage, ob das Dokument gesichert werden soll. Diese Abfrage kann man über eine Änderung der Zeile "myDoc.close(SaveOptions.ask)" in "myDoc.close(SaveOptions.yes)" umgehen.

In dem ausgewählten Skript muß ggf. statt "app.activeDocument" die Definition "app.documents[0]" verwendet werden, um das "oberste" (das gerade geöffnete) Dokument anzusprechen.
Es ist durchaus möglich, daß das ausgewählte Skript noch andere Bedingungen erfüllen muß. Ich bitte darum, Fehler zu melden.

Das ausgewählte Skript muß ein JavaScript (Endung ".js" oder ".jsx") sein!
Code
// doScriptForBooks.jsx 
//DESCRIPTION: Führt ein per Dialog auszuwählendes Skript über alle Dokumente aller geöffneten Bücher aus.

var myScriptFile = File.openDialog("Bitte Skript wählen");
if (myScriptFile == null) exit();

var mySuffix = myScriptFile.name.split(".").pop();
if ((mySuffix == "js") || (mySuffix == "jsx"))
{
if ((app.books.length > 0))
{
for (oneBook = 0; oneBook < app.books.length; oneBook++)
{
var myDocs=app.books[oneBook].bookContents;
for (oneDoc=0; oneDoc<app.books[oneBook].bookContents.length; oneDoc++)
{
myDoc = app.open(File(myDocs[oneDoc].fullName), false);
app.doScript(myScriptFile,ScriptLanguage.javascript);
myDoc.close(SaveOptions.ask);
}
}
alert("Fertig");
}
else
{
alert("Fehler.\rBitte mindestens ein Buch öffnen\r(und ein Skript wählen.)")
}
}
else
{
alert("Fehler.\rDas ausgewählte Skript muß ein JavaScript sein.")
}



als Antwort auf: [#228763]
(Dieser Beitrag wurde von Martin Fischer am 13. Mai 2006, 10:45 geändert)

Skript(e) auf gesamtes Buch in IDCS2 anwenden?

zaphodbeeblebroxx
Beiträge gesamt: 408

13. Mai 2006, 22:23
Beitrag # 4 von 5
Beitrag ID: #228984
Bewertung:
(6390 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
Hallo Martin,

vielen Dank für die schnelle Hilfe!
Hast Du an den Wochenenden eigentlich auch mal "skriptfrei?".

Das Skript ist ja noch komfortabler geworden, als ich mir das vorgestellt habe: Ich hatte an eine Schleife gedacht, die alle Dokumente eines Buchs durchläuft. Den Code des entsprechende Skripts, das für jedes Dokument ausgeführt werden soll, hätte ich dann einfach in die Schleife kopiert.

Aber mit einer Abfrage, welches Skript verwendet werden soll ist das ganze noch besser und variabler einsetzbar!

Ich werde Dein Skript nächste Woche testen!

zaphodbeeblebroxx


als Antwort auf: [#228925]

Skript(e) auf gesamtes Buch in IDCS2 anwenden?

Martin Fischer
  
Beiträge gesamt: 12783

15. Mai 2006, 08:15
Beitrag # 5 von 5
Beitrag ID: #229064
Bewertung:
(6355 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Hast Du an den Wochenenden eigentlich auch mal "skriptfrei?".
Ja, wenn ich die Woche über Zeit für solche Spielereien habe.

> Den Code des entsprechende Skripts, das für jedes Dokument ausgeführt werden soll,
> hätte ich dann einfach in die Schleife kopiert.
Ja, so war es auch ursprünglich gedacht.
Aber dann hatte ich Sorge, erklären zu müssen, wie der Pfad einzugeben ist und habe dies gleich mit dem Dialog erledigt.

Der Pfad zum Skript könnte auf dem MAC z.B. folgendermaßen lauten:
var myScriptFile = File("/Applications/Adobe%20InDesign%20CS2/Presets/Scripts/test.jsx")

Theoretisch wäre es auch möglich,alle Skripte mit den Endungen ".js" und ".jsx" im Verzeichnis, in welchem "doScriptForBooks.jsx" abgelegt ist zu sammeln und in einem Dialog zur Auswahl anzubieten. Man müßte sich dann nicht mehr bis zum Skriptverzeichnis durchhangeln.


als Antwort auf: [#228984]
X