[GastForen Programme Print/Bildbearbeitung Adobe InDesign Indesign JavaScript

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

Indesign JavaScript

doin0011
Beiträge gesamt: 1

16. Sep 2005, 14:40
Beitrag # 1 von 5
Bewertung:
(6617 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wie sieht der JavaScript source code aus, wenn man in InDesign den Namen von Formatvorlagen automatisch umbenennen will?
X

Indesign JavaScript

Martin Fischer
  
Beiträge gesamt: 12783

16. Sep 2005, 15:14
Beitrag # 2 von 5
Beitrag ID: #187565
Bewertung:
(6588 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi boin,

ich bin zwar überzeugt, Dich nicht richtig verstanden zu haben.
Vielleicht hilft Dir aber dies weiter:
Code
//FormatNamenUmbenennen.js 

var myOldStyle = ["Überschrif1", "Überschrift2"]
var myNewStyle = ["Überschrift 1", "Überschrift 2"]

var myDoc = app.documents[0];
var myStyles = myDoc.paragraphStyles;
if (myOldStyle.length == myNewStyle.length){
for (k=0;k<myOldStyle.length;k++){
changeName(myOldStyle[k], myNewStyle[k]);
}
}
else{
alert(myOldStyle.length + " alte Formate gegen " + myNewStyle.length + " neue Formate.\rBitte angleichen.")
}

function changeName(oldStyle, newStyle){
try{
myStyles.item(oldStyle).name=newStyle;
}
catch(e){
//möglichereise newStyle nicht überschreibbar
alert("Absatzformat \"" + oldStyle + "\" nicht vorhanden oder Absatzformat \"" + newStyle + "\" nicht überschreibbar.")
}
}


oder das
Code
// FormatNamenUmbenennenSprache.js 
// Ersetzt in den Formatnamen den String myAltSprach durch myNeuSprach
// z.B. aus "Normal_DEU" wird "Normal_FRA"
//
var myAltSprach = "DEU"
var myNeuSprach = "FRA"

var myDoc = app.documents[0];
var myStyles = myDoc.paragraphStyles;
for (k=1;k<myStyles.length;k++){
myDoc.paragraphStyles[k].name = convertName(myDoc.paragraphStyles[k].name);
}

function convertName(oneStyle){
var oneStyle = oneStyle.split(myAltSprach);
var oneStyle = oneStyle.join(myNeuSprach);
return oneStyle;
}



als Antwort auf: [#187555]

Indesign JavaScript

Aioli
Beiträge gesamt: 5

3. Jul 2019, 10:47
Beitrag # 3 von 5
Beitrag ID: #570924
Bewertung:
(2303 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

das Script FormatNamenUmbenennenSprache.js ist genau das, was ich brauche, vielen Dank dafür!
Mein Szenario: Etliche Formate eines Titels enthalten am Anfang „FR“ und sollen in „XR“ umbenannt werden, um als Vorlage für ein neues Werk weiterverwendet werden zu können.

DEU/FRA habe ich ersetzt und das Script abgespeichert.
Beim Ausführen des Scripts innerhalb eines Testdokuments mit einem Absatzformat „FR_Grundtext“ erhalte ich jedoch folgende Fehlermeldung:

Zitat JavaScript Fehler!
Fehlernummer 528
Fehlerzeichenfolge: Im Formatnamen dürfen keine Klammern verwendet werden.

Engine: main
...
Zeile: 11
Quelle: myDoc.paragraphStyles[k].name =


Ich nutze Indesign CS 6 am PC und habe auch schon andere Absatzformatnamen probiert. Wird eine Klammer im Code angemeckert oder weißt du, weshalb es hier zum Fehler kommt?

Herzlichen Dank im Voraus und viele Grüße


als Antwort auf: [#187565]

Indesign JavaScript

Martin Fischer
  
Beiträge gesamt: 12783

3. Jul 2019, 11:20
Beitrag # 4 von 5
Beitrag ID: #570928
Bewertung:
(2284 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Aioli,

huch, das Skript ist schon uralt.
Willst Du die Aufgabe unter CS6-Bedingungen nicht lieber mit sprachspezifischen Formatgruppen lösen?

Der Fehler resultiert aus der Tatsache, dass das Skript auch versucht, das Absatzformat "[Einfacher Absatz]" (mit Klammern) umzubenennen. Das kann umgangen werden, indem der Start der Zählervariable von 1 auf 2 erhöht wird:

Code
// FormatNamenUmbenennenSprache.js  
// Ersetzt in den Formatnamen den String myAltSprach durch myNeuSprach
// z.B. aus "Normal_DEU" wird "Normal_FRA"
//
var myAltSprach = "DEU"
var myNeuSprach = "FRA"

var myDoc = app.documents.firstItem();
var myStyles = myDoc.paragraphStyles;
for (var i = 2; i < myStyles.length; i++)
{
try
{
myDoc.paragraphStyles.item(i).name = convertName(myDoc.paragraphStyles.item(i).name);
}
catch(e)
{
alert(myDoc.paragraphStyles.item(i).name + ': ' + e.message);
}
}

function convertName(oneStyle)
{
var str = oneStyle.split(myAltSprach).join(myNeuSprach);
return str;
}



als Antwort auf: [#570924]

Indesign JavaScript

Aioli
Beiträge gesamt: 5

3. Jul 2019, 11:43
Beitrag # 5 von 5
Beitrag ID: #570930
Bewertung:
(2273 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

besten Dank für deine schnelle Hilfe und Erklärung!

Du hast völlig recht: Ich sehe, dass ausschließlich Formate außerhalb von Formatgruppen umbenannt werden.
Tatsächlich geht es „nur“ darum, die Werkskürzel in den Formaten umzubenennen. Wenn nun diese Kürzel vom Arbeitstitel auf den finalen Titel geändert werden, muss ich mehrere Dutzend Formate und Formatgruppen umbenennen.
Anschließend wird für ein darauf aufbauendes Werk ein neues Kürzel gebraucht werden (Kundenanforderung).

Beispiel:
Der Arbeitstitel vom Anfang der Satzarbeiten, nennen wir ihn „FR“, muss dann „XR“ heißen und im nächsten Werk „YB“.

Wäre es dir möglich, das Script dahingehend zu erweitern, oder gibt es so etwas schon und ich habe es nicht gefunden?

Und: Kann eine Wiederholung mit
Code
var myStyles = myDoc.characterStyles; 

die Zeichenformate einschließen oder muss dort mehr beachtet werden?

Beste Grüße!


als Antwort auf: [#570928]
X