Allgemein AppleScript Automatisierung InDesign Javascript Job Workflow XML

Wie kann InDesign automatisiert werden? Ein Mini-Tutorial …

Abläufe und (vor allem: sich wiederholende) Gestaltungsaufgaben in Adobe InDesign können mit InDesign Skripten automatisiert werden. Diese Skripte (oder auch Scripts) sind kleine Befehlsabfolgen, die in einer der folgenden Programmiersprachen verfasst werden können: AppleScript (nur Mac), JavaScript (plattformunabhängig) oder VB-Script (nur PC).
Wenn Dich die Programmierung eines Scripts Dich reizt, installiere Dir als ersten Step am besten das ExtendScript-Toolkit (ESTK) von Adobe (aktuelle Version: Teil der Creative Cloud, ältere Versionen findest Du auf der Installations-CD Deines InDesigns) auf Deinem Rechner. Im Folgenden konzentrieren wir uns auf das Schreiben eines kleinen JavaScripts für InDesign (funktioniert an Mac und PC).

Öffne nun Adobe InDesign und das ESTK. Nachdem Du beide Programme gestartet hast, wählst Du links oben im ESTK Deine Zielanwendung und die richtige Programmversion aus (in unserem Fall „Adobe InDesign CC 2018 (13.064). (Hast Du eine andere InDesign Version laufen, wähle einfach diese aus).

 

Das ExtendScript Toolkit kann nun mit InDesign kommunizieren.

Wie aber jetzt anfangen mit InDesign-Scripting?
Lege in InDesign ein leeres Einzelseiten-Dokument an. Jedes Objekt, das Du in Deinem Dokument mit der Hand hinzufügst, kannst Du nun über das ESTK manipulieren. Und: Du kannst per Script auch eigene Objekte oder Dokumente hinzufügen.
Wenn Du Dir den Object Model Viewer zur Hilfe nimmst (ganz oben im Menü „Hilfe“) und sich im anschließend öffnenden Fenster „InDesign Object Model“ auswählst,  bekommst Du einen ersten Überblick, welche Dinge Du beeinflussen kannst. Das erschlägt erstmal …

 

Fangen wir also mal klein an. Alle Befehle, die im Folgenden auftauchen, findest Du aber auch im Object Model Viewer, wenn Du danach suchst.

Wir möchten unserem InDesign-Dokument ein Rechteck hinzufügen.

var Rechteck = app.activeDocument.rectangles.add();

Drücke anschließend oben den Play-Button im ESTK und Du siehst: InDesign legt oben links im Dokument ein Rechteck an. Wenn Du das Script nochmal laufen lässt, wird ein weiteres Rechteck angelegt, usw. Solange das Script läuft, heißt dieses Rechteck für InDesign für das ESTK nun „Rechteck“ und wir können es so ansprechen. Zum Beispiel drehen.

var Rechteck = app.activeDocument.rectangles.add();
Rechteck.rotationAngle = 45;

 

Die Position des Rechtecks stört Dich? Ändere sie einfach, indem Du die Koordinaten einträgst, die es haben soll (in der Form [Y1, X1, Y2, X2]). Sagen wir, wir wollen ein Quadrat, dass bei X=100 mm und Y=120 mm liegt und eine 50mm breit/hoch ist. Die Koordinaten wären also: [120, 100, 170, 150]. Die Koordinaten änderst Du über die geometricBounds-Eigenschaft des Rechtecks.

 

var Rechteck = app.activeDocument.rectangles.add();
Rechteck.geometricBounds = [120, 100, 170, 150];
Rechteck.rotationAngle = 45;

 

Mit ein paar weiteren Zeilen, könntest Du nun beispielsweise sagen: Dein Script soll Dir 100 Seiten ein Dokument anlegen, auf jeder dieser Seiten ein Rechteck zeichnen und dieses immer um 2 Grad weiter drehen. Dafür brauchst Du eine Schleife (ein Werkzeug, dass InDesign erklärt „mache etwas so lange, bis …“). Und Seiten werden prinzipiell genau so wie Dein Rechteck angelegt, nur eben nicht als rectangle, sondern als page

var neueSeite = app.activeDocument.pages.add();

Mittels einer Schleife kannst Du InDesign zählen lassen. Da wir 100 Seiten anlegen wollen, zählen wir bis 101. Warum eins weiter, dazu kommen wir gleich. Unsere Zählvariable nennen wir i und i++ heißt, i wird immer um 1 hochgezählt, nachdem der Teil in den geschweiften Klammern ausgeführt wurde.

for (var i = 0; i < 101; i++)
{
//InDesign soll hier immer etwas tun, solange unsere Bedingung noch stimmt
}

Das heißt: i hat den Startwert 0, die Anweisungen in den geschweiften Klammern werden ausgeführt, dann wird i automatisch auf 1 gesetzt, die Anweisungen in den geschweiften Klammern erneut ausgeführt, wieder hochgezählt, usw. Und zwar so lange, bis i kleiner als 101 ist, also genau 100x.

for (var i = 0; i < 101; i++){ var neueSeite = app.activeDocument.pages.add();
var Rechteck = app.activeDocument.rectangles.add();
Rechteck.geometricBounds = [120, 100, 170, 150];
Rechteck.rotationAngle = 5*i; }

Interessant: wir haben nun 101 Seiten in unserem Dokument (eine Seite gab’s schon zu Anfang, 100 sind durch das Script hinzugefügt worden). Wo aber sind unsere 100 Quadrate? Auf Seite 1 – denn da wir nirgends gesagt haben, wohin das jeweilige Rechteck soll, setzt InDesign einfach jedes neue an den Anfang unseres Dokumentes. Auch schön 🙂


Legen wir mal händisch ein neues Dokument (Einzel-, keine Doppelseiten) an und ändern unser Script ein wenig.

for (var i = 0; i < 101; i++){
var neueSeite = app.activeDocument.pages.add();
var Rechteck = neueSeite.rectangles.add();
Rechteck.geometricBounds = [120, 100, 170, 150];
Rechteck.rotationAngle = 5*i; }

Zack: 100 Seiten angelegt, 100 Quadrate angelegt und jedes 5 Grad weiter gedreht, als das bisherige (ohne Deinen Rechner zu kennen, schätze ich: InDesign hat weniger als eine Minute dafür gebraucht). Ich gebe zu: Wahrscheinlich war das als Beispiel zur Automatisierung einer Deiner Jobs eher ungeeignet – aber es ging ja um den Anfang. Dein Script kannst Du nun in den InDesign-Unterordner „/Scripts/Scripts Panel“ abspeichern. Anschließend steht es Dir in Adobe InDesign in der Scriptpalette (Fenster-Hilfsprogramme-Skripte) zur Verfügung und Du kannst es dort per Doppelklick starten (allerdings musst Du dafür ein – im Idealfall leeres – Dokument im Einzelseitenmodus geöffnet haben.

Wenn Du nun Blut geleckt hast, empfehle ich Dir zum Einstieg das InDesign-Scripting-Tutorial von Video2Brain (zwar noch für InDesign CS 4 – die nötigen Grundlagen hast Du aber danach) – und wenn Du scriptingmäßig mal nicht weiter weißt, schau mal hier: Scripting-Werkstatt des hilfdirselbst-Forums.

Tatsächlich hilft es bei einem Großteil aller wiederkehrenden Jobs, während der Arbeit zu überlegen: „Was mache ich da? Welche händischen Einzelschritte sind notwendig und liegt diesen eine Logik zu Grunde?“. Und falls ja, dann macht ein Script den Job i.d.R. schneller 🙂

Schreibe einen Kommentar