[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Scriptanpassung - Formate umbenennen und in neue Formatgruppe verschieben

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

Scriptanpassung - Formate umbenennen und in neue Formatgruppe verschieben

hebbert
Beiträge gesamt: 5

24. Nov 2015, 17:02
Beitrag # 1 von 4
Bewertung:
(2211 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo liebe Mitstreiter,

ich hatte mir vor einiger Zeit dieses Script besorgt. Funktioniert super und hat mir schon viel Zeit erspart. Es ändert von Absatzformaten die Namen von "xx" zu "yy".
Jetzt bräuchte ich eine Anpassung so dass ich das bestehende Absatzformat umbenennen (Name_neu) und zeitgleich eine Formatgruppe (Gruppe_neu) erzeugen kann. Mir würde es auch schon helfen wenn ich das neu benannte Format in eine bestehende Formatgruppe schieben könnte, wäre vielleicht auch besser da ich mehrere Formate in eine neue Gruppe schieben müsste.

Code
var doc=app.activeDocument;  
var myPstyles=doc.allParagraphStyles, l=myPstyles.length;
while (l--){
try{
alert(myPstyles[l].name);
myPstyles[l].name=myPstyles[l].name.replace("02_Dachzeile","02_1_Dachzeile"); //replace the space character with a underscore
myPstyles[l].name=myPstyles[l].name.replace("02_Ueberschrift_gross","02_2_Ueberschrift_gross"); //replace the space character with a underscore
myPstyles[l].name=myPstyles[l].name.replace("02_Ueberschrift_mittel","02_3_Ueberschrift_mittel"); //replace the space character with a underscore
myPstyles[l].name=myPstyles[l].name.replace("02_Ueberschrift_klein","02_4_Ueberschrift_klein"); //replace the space character with a underscore
myPstyles[l].name=myPstyles[l].name.replace("04_Text_ohne_Einzug","04_1_Text_ohne_Einzug"); //replace the space character with a underscore
myPstyles[l].name=myPstyles[l].name.replace("04_Text","04_2_Text"); //replace the space character with a underscore
myPstyles[l].name=myPstyles[l].name.replace("04_Text_Initial_2zeilig","04_3_Text_Initial_2zeilig"); //replace the space character with a underscore
myPstyles[l].name=myPstyles[l].name.replace("04_Text_Initial_3zeilig","04_3_Text_Initial_3zeilig"); //replace the space character with a underscore
myPstyles[l].name=myPstyles[l].name.replace("06_Interview_Ueberschrift","06_1_Interview_Ueberschrift"); //replace the space character with a underscore
myPstyles[l].name=myPstyles[l].name.replace("06_Interview_Vorspann","06_2_Interview_Vorspann"); //replace the space character with a underscore
myPstyles[l].name=myPstyles[l].name.replace("06_Interview_Frage","06_3_Interview_Frage"); //replace the space character with a underscore
myPstyles[l].name=myPstyles[l].name.replace("06_Interview_Antwort","06_4_Interview_Antwort"); //replace the space character with a underscore


}catch(e){}

}
alert ("Done!\nYou can go outside an play now");


Falls ihr hierfür eine Idee hättet, oder ich beim Durchstöbern einen ähnlichen Beitrag übersehen habe, bin ich über jede Rückmeldung dankbar.

Schöne Grüße aus Donauwörth!
Hubert
X

Scriptanpassung - Formate umbenennen und in neue Formatgruppe verschieben

Martin Fischer
  
Beiträge gesamt: 12414

25. Nov 2015, 07:11
Beitrag # 2 von 4
Beitrag ID: #544898
Bewertung:
(2150 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Halo Hubert,

Absatzformate kennen den move()-Befehl.

Damit könntest Du ein Absatzformat an eine bestimmte Position (BEFORE, AFTER, AT_END, AT_BEGINNING) einer bekannten Formatgruppe verschieben.

Viele Grüße
Martin




als Antwort auf: [#544894]

Scriptanpassung - Formate umbenennen und in neue Formatgruppe verschieben

Hans Haesler
  
Beiträge gesamt: 5798

26. Nov 2015, 19:59
Beitrag # 3 von 4
Beitrag ID: #544953
Bewertung:
(2070 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hubert,

ich wurde von Kai Rübsamen auf dieses Thema hingewiesen. Von ihm stammen einige Code-Zeilen (das Erzeugen des Ordners, das Verschieben der Formate und – im zweiten Script – ein Ansatz der Liste der Formatnamen) sowie der Kritikpunkt, dass zuviele Replace-Befehle unnötig ausgeführt werden.

Bei Deinem Script sollte anstelle von allParagraphStyles eher die paragraphStyles gespeichert werden.
Sonst werden Formate, welche sich schon in Gruppen befinden, ebenfalls behandelt.

Als Name für die Zählervariable ist das kleine "L" ungeeignet, weil es leicht mit der Ziffer "1" verwechselt wird.

Die Kommentare am Ende der Zeilen sollten entfernt werden (die genannte Ersetzen-Aktion – Leerschlag zu Underscore – ist durch andere Inhalte ersetzt worden).

Zum Verschieben in eine Formatgruppe reicht es, diese zu Beginn zu erzeugen und in der while-Schleife genügt eine einzige Zeile:

Code
var doc=app.activeDocument; 

if (!doc.paragraphStyleGroups.itemByName("Hubert").isValid) {
var paraStyleGroup = doc.paragraphStyleGroups.add({name: "Hubert"});
}
else {
var paraStyleGroup = doc.paragraphStyleGroups.itemByName("Hubert");
}
var allStyles=doc.paragraphStyles;
var n=allStyles.length;
while (n--){
try{
allStyles[n].name=allStyles[n].name.replace("02_Dachzeile","02_1_Dachzeile");
allStyles[n].name=allStyles[n].name.replace("02_Ueberschrift_gross","02_2_Ueberschrift_gross");
allStyles[n].name=allStyles[n].name.replace("02_Ueberschrift_mittel","02_3_Ueberschrift_mittel");
allStyles[n].name=allStyles[n].name.replace("02_Ueberschrift_klein","02_4_Ueberschrift_klein");
allStyles[n].name=allStyles[n].name.replace("04_Text_ohne_Einzug","04_1_Text_ohne_Einzug");
allStyles[n].name=allStyles[n].name.replace("04_Text","04_2_Text");
allStyles[n].name=allStyles[n].name.replace("04_Text_Initial_2zeilig","04_3_Text_Initial_2zeilig");
allStyles[n].name=allStyles[n].name.replace("04_Text_Initial_3zeilig","04_3_Text_Initial_3zeilig");
allStyles[n].name=allStyles[n].name.replace("06_Interview_Ueberschrift","06_1_Interview_Ueberschrift");
allStyles[n].name=allStyles[n].name.replace("06_Interview_Vorspann","06_2_Interview_Vorspann");
allStyles[n].name=allStyles[n].name.replace("06_Interview_Frage","06_3_Interview_Frage");
allStyles[n].name=allStyles[n].name.replace("06_Interview_Antwort","06_4_Interview_Antwort");
allStyles[n].move(LocationOptions.AT_END, paraStyleGroup);
}
catch (e) {
}
}
alert ("Done!\nYou can go outside an play now");

Ohne das ständige Anzeigen des aktuellen Formatnamens wird das zackig ausgeführt.

Aber: Es gibt zwei Probleme.
Erstens: Bei jedem der zwölf Durchgänge wird jeder der zwölf Replace-Befehle ausgeführt. Davon immer elf Mal umsonst.
Zweitens: Das erste Format ist nicht zuoberst, sondern ganz zuletzt eingereiht.

Als Lösung des ersten Problems bietet sich an, die Formate direkt anzusprechen.
Das könnten zwölf Befehlszeilen sein. Oder eine Liste mit den Namenspaaren, welche mit einer Schleife abgearbeitet wird.

Zum zweiten Problem habe ich folgendes versucht: Im Formatordner wird zuerst ein temporäres Format angelegt, welches am Schluss wieder entfernt wird.

Code
var curDoc  = app.documents[0]; 
var grpName = "hebbert";

if (!curDoc.paragraphStyleGroups.itemByName(grpName).isValid) {
var paraStyleGroup = curDoc.paragraphStyleGroups.add({name:grpName});
}
else {
var paraStyleGroup = curDoc.paragraphStyleGroups.itemByName(grpName);
}

var dummy = paraStyleGroup.paragraphStyles.add();
dummy.name = "dummy";

var repList = [
["02_Dachzeile", "02_1_Dachzeile"],
["02_Ueberschrift_gross", "02_2_Ueberschrift_gross"],
["02_Ueberschrift_mittel", "02_3_Ueberschrift_mittel"],
["02_Ueberschrift_klein", "02_4_Ueberschrift_klein"],
["04_Text_ohne_Einzug","04_1_Text_ohne_Einzug"],
["04_Text","04_2_Text"],
["04_Text_Initial_2zeilig","04_3_Text_Initial_2zeilig"],
["04_Text_Initial_3zeilig","04_3_Text_Initial_3zeilig"],
["06_Interview_Ueberschrift","06_1_Interview_Ueberschrift"],
["06_Interview_Vorspann","06_2_Interview_Vorspann"],
["06_Interview_Frage","06_3_Interview_Frage"],
["06_Interview_Antwort","06_4_Interview_Antwort"]
];

for (var p=0; p<repList.length; p++) {
try {
curDoc.paragraphStyles.itemByName(repList[p][0]).name = repList[p][1];
curDoc.paragraphStyles.itemByName(repList[p][1]).move(LocationOptions.AT_END, paraStyleGroup);
}
catch (e) {
}
}

paraStyleGroup.paragraphStyles.itemByName("dummy").remove();

var dlog = new Window("palette");
dlog.size = [320,100];
dlog.add("statictext", [80, 100, 320, 116], "Fertig.");
dlog.show();
// eine kleine Pause
$.sleep(999);
// das Fenster schliessen
dlog.close();

Gruss, Hans


als Antwort auf: [#544894]

Scriptanpassung - Formate umbenennen und in neue Formatgruppe verschieben

hebbert
Beiträge gesamt: 5

30. Nov 2015, 08:26
Beitrag # 4 von 4
Beitrag ID: #544990
Bewertung:
(1928 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

vielen herzlichen Dank für deine Antwort und Mühe.
Das Script läuft nun viel sauberer und schneller durch als vorher. Zudem werden die Formate schön in Gruppen verschoben. Leider stehe ich noch ganz am Anfang der Skriptbearbeitung, habe aber einen Kollegen der mit Javascript vertraut ist. Mit ihm werde ich das mal analysieren und ggfs erweitern.
Das bringt mich aber schon ein Stück weiter.

Vielen Dank und Grüße
hebbert


als Antwort auf: [#544953]
X

Aktuell

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
05.02.2021 - 05.11.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 05. Feb. 2021, 13.00 Uhr - Freitag, 05. Nov. 2021, 17.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PM

Veranstaltungen
05.03.2021 - 30.04.2021

Digicomp Academy AG, Zürich oder virtuell
Freitag, 05. März 2021, 13.00 Uhr - Freitag, 30. Apr. 2021, 17.00 Uhr

Lehrgang

Im berufsbegleitenden Web Publisher Lehrgang vertiefen Sie Ihr Wissen rund um das Thema Screendesign und die Umsetzung von Websites. Wir befähigen Sie dazu selbständig und professionell Ihren Webauftritt zu planen und in die Realität umzusetzen.

Preis: CHF 3'250.–
Dauer: 8.5 Tage - Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt.

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PWEB

Neuste Foreneinträge


Abschnitt mit Absatzformat beginnen?

Trennungen suchen

Bug in Photo 1.9.x ?

Verwendung von Quark-Version ohne Support oder wie komme ich von Quark weg ;-)

Serien-Dateinamenänderung (mit Automator?) "nur die ersten 7 Schreibstellen"

Scriptphänomen alle 16 Steps

Fotobuch mit gleicher längster Bildseite

Schwarz überdruckt nicht

Von Quark nach Indesign konvertieren

Illustrator 2021 Stapelverarbeitung
medienjobs