Skripte ins Menü einbinden

Mit dem Skript addScriptFolderToMenu kann das InDesign-Menü mit eigenen Skripten erweitert werden.

Warum das alles?

Die Verwaltung und die Benutzung von Skripten hat sich für den Anwender von InDesign seit Version 1 nicht geändert. Dreh und Angelpunkt ist dabei die Skripte-Bedienfeld. Die Väter der Idee von addScriptFolderToMenu stellen fest, dass dieser „versteckte“ Zugang einer der Gründe dafür ist, dass die Nutzung der Skripttechnologie vor allem bei Neulingen und technisch wenig versierten Anwendern nur sehr beschränkt erfolgt.

Ziel

Ziel von addScriptFolderToMenu ist es den Zugang zu Skripten und damit deren Anwendung in InDesign zu erleichtern. Auch Anfänger und Gelegenheitsnutzer sollen die Skripte prominent sehen und niederschwellig nutzen können. Seinen besonderen Charme spielt diese Lösung aus, wenn man diese Lösung so konfiguriert, dass mehrere Rechner auf die gleichen Skripte zugreift! So ist sicherzustellen, dass alle Teammitglieder immer alle Skripte im Zugriff haben und auch immer auf gleichem Stand sind. Eine Verteilung von Skripten ist so ein Kinderspiel.

Vorteile

In mehreren InDesign-Versionen nutzen

Wenn das Startupscript in mehreren InDesign-Programmversionen installiert ist, kann man das Menü auch in allen nutzen. So ist es möglich in allen InDesign-Versionen ein Set an Skripten zu nutzen.

Im Team nutzen

Wenn der Ordner für das Menü auf einem Server liegt, ist es möglich, dass das ganze Team mit einem Set an Skripten arbeitet Der Autor dieser Zeilen hat den Ordner in einem G-Drive-Ordner liegen und nutz auf diese Weise das Gleiche Set an Skripten auf mehreren Rechnern.

Nachteil Tastaturbefehle

Sie können den Skripten für das Menü nur dann Tastaturbefehle zuweisen, wenn der Ordner im Skripte-Bedienfeld sichtbar ist. Dann sind die Skripte also sowohl über Menü als auch das Bedienfeld ausführbar.

Vorabinfo: Was ist ein Startupscript

Ein Startupskript liegt in InDesign in einem bestimmten Verzeichnis und wird beim Start des Programms geladen. Damit können verschiedene Szenarien realisiert werden. Unter anderem können, wie in diesem Fall, Menübefehle in InDesign eingefügt werden.

macOS

.../Home/Library/Preferences/Adobe InDesign/Version **VERSIONSNUMMER**/de_DE/Scripts/Scripts Panel/Users/<username>/Library/Preferences/Adobe InDesign/Version **VERSIONSNUMMER**/de_DE/Scripts

Windows

Benutzer

...\Users\<username>\AppData\Roaming\Adobe\InDesign\Version **VERSIONSNUMMER**\de_DE\Scripts

Programm

...\Program Files\Adobe\Adobe InDesign **VERSIONSNUMMER**\Scripts\startup scripts

Der schnellste Weg zum richtigen Ordner führt über die Bedienfeld Skripte (Fenster > Hilfsprogramme > Skripte). Dort gibt es die Ordner Anwendungund Benutzer. Mit einem Klick per rechte Maustaste kann man diese im Finder/Explorer öffnen. Es öffnet sich der Ordner Scripts. Wenn es dort keinen Ordner startup scripts gibt, kann man ihn einfach anlegen und Startupskripte hineinlegen

Bestandteile von addScriptFolderToMenu

Startupskript

Das Startupskript addScriptFolderToMenu.jsx gehört, wie oben beschrieben, in das Verzeichnis startup scripts.

Der Ordnerpfad zu den Skripten kann verändert werden. Öffnen Sie das Skript in einem geeigneten Texteditor (z.B. VSCode, Notepad++, …). Sie finden dort die Zeile scriptMenuFolderName: Fügen sie unter diese Zeile den Pfad zum Ordner ein, der zum Skript gehört. Dies kann der gleiche Ordner sein, es kann aber auch ein beliebiger Ordner auf dem Rechner oder im Netzwerk sein.

Zum Beispiel

scriptMenuFolderName:
"G:/Meine Ablage/CS Skriptmenu/Scripts_Menu",

Wenn Sie den Ordner auf ein Netzwerkverzeichnis legen bedenken Sie, dass sie auf diese Skripte nur zugreifen können, wenn Sie Zugriff auf dieses haben.

Ordner

In den Ordner, der unter scriptMenuFolderName: genannt ist, kann man beliebig viele Skripte oder Ordner ablegen. Diese werden in InDesign unter dem Menüpunkt, der unter scriptMenuName definiert ist, angezeigt.

Namenskonventionen

Die Ordner und Skripte werden alphabetisch sortiert.

  • A_ordner
  • B_skript
  • C_ordner
  • D_ordner
  • E_ordner

Es ist jedoch zusätzlich möglich die Namen der Ordner und Dateien mit einer zweistelligen Ziffer gefolgt von einem Underline zum umsortieren zu bringen.

  • 10_Ordner
  • 20_Skript
  • 30_Skript
  • 35_Skript
  • 40_Ordner

Skriptnamen Metadaten

Die Namen von Skripten, vor allem, wenn man die kostenlosen aus dem Internet herunterlädt, sind manchmal kryptisch. Man kann die Namen, die im Menü erscheinen jedoch manipulieren. Dazu öffnen Sie das Skript und fügen in die erste Zeile des Skriptes //SCRIPTMENU: ein gefolgt von dem Namen, der im Menü erscheinen soll.

Skriptmenü

Der unterste Menüpunkt des Menüs ist Über AddScriptFolderToMenu. Aktiviert man diesen, öffnet sich ein Dialog mit folgenden Buttons:

[Ordner anzeigen] Hier kann der Ordner mit den Skripten, die im Menü angzeigt werden, geöffnet werden.

[Log anzeigen] Im Ordner von addScriptFolderToMenu wird ein Ordner „log“ erzeugt, der die Log-Datei enthält. Diese Log-Datei hilft im Supportfall. Der Button öffnet diese Log-Datei.

[Startskriptdatei anzeigen] Dieser Button öffnet den Ordner, in dem das Startup-Skript liegt.

[Menü aktualisieren] Wenn der Inhalt des addScriptFolderToMenu-Ordners verändert wird, wirkt sich dies beim nächsten Öffnen von InDesign aus. Um die Änderung ohne Neustart von InDesign wirksam zu machen klickt man auf diesen Button. Dann wird das addScriptFolderToMenu-Menü aktualisiert.

[Menü entfernen] Dies entfernt das Menü aus InDesign

Zusätzliche Optionen

Startup Skript

In dieser Zeile im Startupskript kann man den Namen des Menüs in InDesign definieren.

Zum Beispiel

scriptMenuName: localize({ en: "Chris-Scripts", de: "Chris-Skripte" }),

In dieser Zeile im Startupskript kann man die Position des Menüs in InDesign definieren. Bei Position „table“ erscheint das Menü hinter dem Menüpunkt „Tabelle“.

Zum Beispiel

position: "table", // help

Separator

Um das Menü zu strukturieren, kann man Separatoren einfügen. Das sind dünne graue Linien, wie man sie aus Programmmenüs kennt. Diese erzeugt man im addScriptFolderToMenu-Menü über Textdateien, die diesen Dateinamen haben: separator-----.txt. Natürlich kann man auch diese Dateien über vorangestellte Nummern im Menü organisieren. Also zum Beispiel 80_separator-----.txt.

URLs in Hyperlinks konvertieren

Eigentlich ein alter Hut: Web- und Mail-Adressen sollten in InDesign als aktive Hyperlinks ausgezeichnet werden, damit diese im PDF oder eBook anklickbar sind und so vom Nutzer auch tatsächlich verwendet werden können.

Als netter Nebeneffekt werden eure PDFs (und ggfs. auch E-Books) direkt auch barrierefrei.

Gibt’s schon lange von Adobe, nur funktioniert die Funktion mehr schlecht als recht. Deswegen habe ich meine eigene Funktion als kostenloses Skript zur Verfügung gestellt.

Ihr findet das Skript createHyperlinks_v2.jsx auf GitHub. Zur Installationsanleitung direkt hier entlang. Ein schönes Video habe ich auch erstellt:

XML suchen und Text hinzufügen

Heute erreichte mich die folgende Kundenanfrage:

Gibt es eine Möglichkeit in InDesign nach XML-Elementen zu suchen und Text danach einzufügen?

Die Antwort lautet Nein. Eine Anmerkung dazu: Es gibt die Möglichkeit nach Text zu suchen, und den gefundenen Text mit einem XML-Element auszuzeichnen – aber das war ja nicht gefragt.

Die Anforderung fand ich gut und der Code dazu war schon in vielen Skripten im Einsatz, also habe ich schnell das Skript AddTextToXMLElement.jsx gestrickt, dass die Aufgabe löst.

Wie geht das? Ganz einfach: Skript installieren, Skript per Doppelklick ausführen, XML-Element auswählen, Text vor bzw. Nach dem Element eintragen, Start drücken.

Wer andere Default werde benötigt, öffnet das Skript in einem Texteditor und ändert die Zeilen 8–10:

defaultTagName:"Root",
defaultTextBefore:"Prefix",
defaultTextAfter:"Suffix",

Unter der Hauber werkelt die Funktion evaluateXPathExpression(). Damit diese auch funktioniert, wenn InDesign-Namespaces aktiv sind, werden die Standardnamensräume automatisch hinzugefügt!

An der Stelle sei auch noch mal auf mein uraltes Skript zum Import von XML verwiesen.

GREP-Ersetzungen automatisieren

In der Praxis ist es oftmals schneller, mehrere einfache GREP-Ersetzungen zu formulieren und hintereinander auszuführen, als lange an einer komplexen Abfrage zu feilen. Wenn die Aufgabe wiederholt ausgeführt werden soll, ist es jedoch mühsam, die einzelnen Abfragen immer wieder herauszusuchen und hintereinander auszuführen.

Ein Skript zur Hilfe

Eine typische Aufgabe für ein Skript – allerdings kann nicht jeder aus dem Stand ein Skript programmieren. Diese Aufgabe erledigt mein kostenloses Skript ChainGREP.jsx: Mit ChainGREP kannst du ein neues Skript erstellen, das mehrere Abfragen hintereinander laufen lässt.

Wie geht das?

1. Abfragen erstellen

Der erste und wichtigste Schritt ist, die einzelnen GREP-Abfragen im Suchen/Ersetzen-Dialog zu speichern. Dazu erstellst du einfach den gewünschten GREP, ggfs. inklusive der Formateinstellungen, und sicherst ihn mit dem Klick auf das Festplattensymbol. Der Namen sollte die Aufgabe des GREPs möglichst gut beschreiben und wird später für die Auswahl der Abfragen benötigt.
GREP-Abfrage speichern

2. Skript herunterladen

Nach dem Download des Skripts musst du das Skript installieren. Wenn du das noch nicht gemacht hast, empfehle ich eine längere Installationsanleitung  auf deutsch oder englisch. Als kurze Erinnerung, es ist ganz einfach: Bedienfeld Skripte öffnen; Rechte Maustaste und Im Finder/Explorer öffnen wählen; Skript in den Ordner Scripts Panel kopieren; Fertig.

3. Skript aufrufen

Nach dem Aufruf des Skripts aus der Skriptpalette per Doppelklick erscheint ein Dialog, in dem alle GREP-Abfragen von InDesign angezeigt werden.

Chain GREP Dialog

Die Liste kann komplett in einem Skript gespeichert werden. Meistens will man aber nur eine gewisse Auswahl an Abfragen hintereinander ablaufen lassen. Dazu kannst du mit Remove Abfragen aus der Auswahl entfernen und die Liste mit den Tasten Up bzw. Down sortieren. Nachdem du deine Auswahl getroffen hast, musst du noch den Suchbereich für das neues Skript im Bereich Scope of Find/Change festlegen. In den meisten Fällen ist die Suche im gesamten Dokument eine gute Wahl.
Nun musst du noch den Namen für das zu speichernde Skript eintragen.

Abschließend drückst du auf Save List und das neue Skript wird im Unterordner FindChangeScripts, der neben dem Skript erstellt wird, gespeichert.

Bedienfeld Skripte

Leider erscheint das Skript unter InDesign CC nicht immer automatisch, manchmal muss man das Skripte-Bedienfeld einmal schließen und wieder öffnen. Dann wird das neue Skript aber sicher angezeigt.

Das neue GREP-Skript kann jetzt widerum per Doppelklick aufgerufen werden. Im Skript werden die Abfragen mit allen Einstellungen abgespeichert. Das heißt, du kannst das Skript auch an einem anderen Computer verwenden, an dem die Abfragen nicht installiert sind. Dies bedeutet aber auch, dass bei einer Veränderung der ursprünglichen GREP-Abfrage das Skript neu erstellt werden muss.

Oder doch lieber selber schreiben?

Wer doch lieber sein eigenes Skript schreiben möchte, dem sei das Probekapitel Suchen und Ersetzen per Skript aus meinen Buch InDesign automatisieren empfohlen. In dem Buch gibt es auch einen umfassenden Überblick über die Suche und Ersetzung mit GREP.

Zum Schluß noch vielen Dank an Peter Kahrel, der mir mit seinem Skript GREP query manager die Idee zu diesem Skript geliefert hat.

InDesign erfolgreich automatisieren

Gemeinsam mit Jason Harder von den Performers habe ich ein recht großes und vermutlich auch sehr typisches Automatisierungsprojekt mit InDesign und Skripten realisiert. Auf dem langen Weg dorthin sind uns viele Dinge ein- und aufgefallen. Da wir beide bloggen – Jason steckt hinter printpraxis.net – dachten wir uns: Das sollten wir vielleicht einmal zusammenfassen!

Die Idee ist, sowohl aus der Sicht des Auftraggebers als auch des Entwicklers offen und ehrlich die Sichtweisen in Bezug auf Kernfragen der Automatisierung zu klären. Die Antworten von Jason findet ihr auf seinem Blog, meine Antworten gibt es natürlich hier.

Weiterlesen →

Einstellungen des EPUB-Exports sichern + wiederherstellen

Wer regelmäßig E-Books aus InDesign exportiert findet früher oder später die für seine Arbeitsweise und Dokumentenstruktur passenden Einstellungen für den EPUB-Export. Das Problem ist, diese Optionen werden nur pro Dokument gespeichert und müssen bei neuen Dokumenten erneut vorgenommen werden. Praktisch wäre die Möglichkeit diese Einstellungen in einem Preset zu sichern und dann bei Bedarf vor dem Export zu laden – ganz ähnlich den PDF-Exportvorgaben.
Weiterlesen →

ExtendScript Toolkit unter MacOS El Capitan und Sierra verwenden

Das ExtendScript Toolkit ist seit OS X Mavericks sehr behäbig geworden. In der Praxis konnte man damit nicht mehr debuggen, weil man gefühlt für jeden Einzelschritt eine Sekunde warten musste.

Die Lösung hat Chuck Weger gefunden: Man muss die Funktioan App Nap systemweit abschalten. Das geht zwar auf die Batterielaufzeit, aber dafür kann ich wieder arbeiten.

Ein Anleitung gibt es hier. Der Versuch App Nap nur für das ESTK zu deaktivieren hat leider nichts gebracht.

InDesign automatisieren in der 2. Auflage

coverNach einem Jahr Arbeit und Stress ist es geschaft: Mein Buch InDesign automatisieren – Keine Angst vor Skripting, GREP & Co. erscheint heute in der 2. Auflage.

Ich freue mich, viele Erweiterungen und Neuerungen ankündigen zu können: http://www.indesignjs.de/auflage2/was-ist-neu/

Die Webseite zum Buch mit allen Infos: http://www.indesignjs.de/auflage2/

Für Fragen stehe ich natürlich gerne zur Verfügung.

InDesign CC Document Object Model Dokumentation

Lange und gerne habe ich die HTML DOM Dokumentation von Theunis de Jong (Jongware) für die InDesign Skriptentwicklung verwendet. Die von Adobe mitgelieferte Hilfe im Object Model Viewer halte ich für völlig unbrauchbar.

Da jongware seine Dokumentation nur bis InDesign CS6 zur Verfügung stellt, habe ich mich die Tage daran gemacht diese selber aus Adobes XML-Quelldaten zu transformieren. Diese XSLT-Transformation findet ihr auf github.

Interssanter ist vermutlich die Dokumentation. Sie enthält alle ExtendScript und ScriptUI Objekte und natürlich das InDesign Objekt Modell. Ihr könnt sie auch als ZIP für den Offline Zugriff herunterladen (Leider funktioniert die Offline Suche nicht mit Chrome).

 2014-10-13_105021

Zum Abschluss nochmals vielen Dank an jongware, der mit seinen Vorarbeiten dieses Projekt überhaupt erst möglich gemacht hat!