Metadaten automatisch ausfüllen

Sie können InDesign per Script anweisen, die Dateiinformation immer beim Speichern automatisch auszufüllen. Kopieren Sie dieses Script einfach in den Texteditor Ihrer Wahl:

Sie können InDesign per Script anweisen, die Dateiinformation immer beim Speichern automatisch auszufüllen. Kopieren Sie dieses Script einfach in den Texteditor Ihrer Wahl:

  1. //MetadataBeforeSafe.jsx
  2. //An InDesign CS3 JavaScript
  3. #targetengine "session"
  4. //Creates a simple event listener.
  5. main();
  6.  
  7. function main()
  8. {
  9.   var myEventListener1 = app.addEventListener("beforeSave",  setMetadata, false);
  10.  var myEventListener2 = app.addEventListener("beforeSaveAs", setMetadata, false);
  11. }
  12.  
  13.  
  14. function setMetadata()
  15. {
  16.  app.activeDocument.metadataPreferences.author = "Gunther S. Gurkengabel";
  17.   app.activeDocument.metadataPreferences.copyrightNotice = "gehoert: Hubert P. Honighobel";
  18.  app.activeDocument.metadataPreferences.keywords = ["Katafrakt", "Kolfaktor", "Kekskrümel"];
  19.  app.activeDocument.metadataPreferences.description = "Detlef R. Düsterdoktor dengelte dies Dokument durch";
  20.  app.activeDocument.metadataPreferences.documentTitle = "Millionen von Metadaten";
  21. }

Löschen Sie die Zeilen, die Sie nicht brauchen und tauschen ansonsten die Angaben aus. Speichern Sie das Script in den Ordner "Scripts/Startup Scripts" von InDesign und starten Sie InDesign neu.

Es kann sein, dass Sie den Ordner "Startup Scripts" erst noch selbst anlegen müssen und zwar im Unterverzeichnis "Scripts" des Programmordners.

Das war‘s

Metadaten automatisch, aber konditional

Martin Fischer machte mich darauf aufmerksam, dass das obige Script die Metadaten grundsätzlich und jedesmal übernagelt. Das macht es unmöglich, eine fremde Datei guten Gewissens zu bearbeiten.

Dieses Script nun prüft erst, ob in einem der Felder author, keywords, documentTitle, description, copyrightNotice, copyrightInfoURL, jobName etwas eingetragen ist, und schreibt nur, wenn alle leer sind.

  1. //MetadataBeforeSafe_v2.jsx
  2. //An InDesign CS3 JavaScript
  3. #targetengine "session"
  4. //Creates a simple event listener.
  5. main();
  6.  
  7. function main()
  8. {
  9.   var myEventListener1 = app.addEventListener("beforeSave",  setMetadata, false);
  10.  var myEventListener2 = app.addEventListener("beforeSaveAs", setMetadata, false);
  11. }
  12.  
  13.  
  14. function setMetadata()
  15. {
  16.   if (app.activeDocument.metadataPreferences.author  == "")
  17.     if (app.activeDocument.metadataPreferences.keywords.length  == 0)
  18.       if (app.activeDocument.metadataPreferences.documentTitle  == "")
  19.         if (app.activeDocument.metadataPreferences.description  == "")
  20.           if (app.activeDocument.metadataPreferences.copyrightNotice  == "")
  21.             if (app.activeDocument.metadataPreferences.copyrightInfoURL  == "")
  22.               if (app.activeDocument.metadataPreferences.jobName  == "") {
  23.                 app.activeDocument.metadataPreferences.author = "Gunther S. Gurkengabel";
  24.                 app.activeDocument.metadataPreferences.keywords = ["Katafrakt", "Kolfaktor", "Kekskrümel"];
  25.                 app.activeDocument.metadataPreferences.documentTitle = "Millionen von Metadaten";
  26.                 app.activeDocument.metadataPreferences.description = "Detlef R. Düsterdoktor dengelte dies Dokument durch";
  27.                 app.activeDocument.metadataPreferences.copyrightNotice = "gehoert: Hubert P. Honighobel";
  28.                 app.activeDocument.metadataPreferences.copyrightInfoURL = "http://www.wasndas.wa";
  29.                 app.activeDocument.metadataPreferences.jobName = "Tausend-Tumult-Test-Projekt";
  30.               //  app.activeDocument.metadataPreferences.copyrightStatus = CopyrightStatus.NO;
  31.               //  app.activeDocument.metadataPreferences.copyrightStatus = CopyrightStatus.UNKNOWN;
  32.                 app.activeDocument.metadataPreferences.copyrightStatus = CopyrightStatus.YES;
  33.               }
  34. }

Auch noch der Dokumenttitel?

Und eben kam noch ein Variationswunsch rein: Den Dokumenttitel macht in bestimmten Kontexten nur nach dem Speichern Sinn, wenn der Dateiname da rein soll.

Das braucht natürlich ein anderes Script. Aber Vorsicht: dieses schreibt ohne Bedingung immer den Dateinamen und den Dateipfad in die Metadaten rein!

  1. //MetadataTitleAfterSafe.jsx
  2. //An InDesign CS3 JavaScript
  3. #targetengine "gs_metaAfterSave"
  4. //Creates a simple event listener.
  5. main();
  6.  
  7. function main()
  8. {
  9.         var myEventListener1 = app.addEventListener("afterSave",  setMetadata, false);
  10.         var myEventListener2 = app.addEventListener("afterSaveAs", setMetadata, false);
  11. }
  12.  
  13.  
  14. function setMetadata()
  15. {
  16.         app.activeDocument.metadataPreferences.documentTitle = app.activeDocument.name.replace(/\.indd$/,"");
  17.         app.activeDocument.metadataPreferences.description += "\rPfad: " + app.activeDocument.fullName.toString();
  18. }

Comments

Lob und Frage

Das Script ist großartig und funktioniert ohne Probleme bei mir. Für meine Bedürfnisse wäre es allerdings optimal, wenn das Script etwas variabler wäre. Konkret: Ist es irgendwie möglich hier Absatzformate zu integrieren? Also beispielsweise, dass bei "Autor" der Text aus dem Dokument mit dem Absatzformat "Verfasser" erscheint? Das wäre eine unendliche Arbeitersparnis für mich... Ich danke allen fleißigen Scriptern und hier speziell dir, Gerald. Beste Grüße Charly

Eigene Metafelder in ein InDesign-Dokument anlegen?

Guten Morgen, kann man eigentlich eigene Metadaten-Felder über Javascript in InDesign-Dokumente anlegen, um sie von einer Datenbank auslesen zu lassen? Theoretisch müsste dies ja über die XML-Struktur möglich sein, oder? Viele Grüße Stephan