[GastForen Programme Print/Bildbearbeitung Adobe InDesign Suchen und ersetzen - kleines Script-Problem

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

Suchen und ersetzen - kleines Script-Problem

villa
Beiträge gesamt: 15

7. Feb 2007, 09:17
Beitrag # 1 von 7
Bewertung:
(1778 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,
ich möchte gerne einen "Suchen und Erseztzen" Vorgang automatisieren, stolpere aber irendwie über die richtige schreibweise der Befehle.

Ich suche in einem Text die Auszeichnung "Bold" und ersetze diese mit einer anderen Schrift (Zeichenformat). Was über den Menübefehl klaglos funktioniert soll per JawaScript erledigt werden.

Ausgegangen bin ich von diesem Script, komme aber nicht richtig weiter.
Code
  mySelect = app.selection[0]; 
mySelect.search('?????', false, false, '', undefined, myDoc.paragraphStyles.item(myPStyleName).name);


Wer kann helfen?
X

Suchen und ersetzen - kleines Script-Problem

Martin Fischer
  
Beiträge gesamt: 12783

7. Feb 2007, 09:38
Beitrag # 2 von 7
Beitrag ID: #274799
Bewertung:
(1775 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Villa,

da haben sich ein paar Fehler eingeschlichen.

Hier die allgemeine Notation des Suchbefehls:

search([SUCHTEXT, GANZES_WORT, GROSS-/KLEINSCHREIBUNG, ERSATZTEXT, {GESUCHTE_FORMATIERUNG}, {ERSATZFORMATIERUNG});

Den Ersatztext würde ich, falls er unberücksichtigt bleiben soll, als undefined definieren.
Die Formatierungen für Suche und Ersetze(n) müssen (wenn sie benötigt werden) nach den obligatorischen Argumenten durch Komma getrennt und in geschweiften Klammern stehen.
Klasse und Eigenschaft werden durch Doppelpunkt voneinander getrennt.

In Deinem Fall würde die Zeile also wie folgt lauten:

Code
mySelect.search('?????', false, false, undefined, {appliedCharacterStyle:"Bold"}, {}); 


Suchtext: '?????'
ganzes Wort: false
Groß-/Kleinschreibung: false,
Ersatztext: undefined
gesuchtes Format: Zeichenformat "Bold"
Ersatzformat: undefined (könnte als letztes Argument auch zusammen mit dem Komma davor weggelassen werden)

Alternativ ließen sich die Suche- und Ersetze-Argumente auch vor dem search()-Befehl definieren:

Code
app.findPreferences = app.changePreferences = null; 
app.findPreferences.findText = '?????'
app.findPreferences.appliedCharacterStyle = 'Bold'
mySelect.search();



als Antwort auf: [#274793]
(Dieser Beitrag wurde von Martin Fischer am 7. Feb 2007, 09:43 geändert)

Suchen und ersetzen - kleines Script-Problem

villa
Beiträge gesamt: 15

7. Feb 2007, 11:21
Beitrag # 3 von 7
Beitrag ID: #274845
Bewertung:
(1758 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
da fehlt mir leider immer noch etwas.

Mein letzter Versuch lautet:
Code
  mySelect.search(undefined, false, false, undefined, {characterStyle:"Bold"}, {characterStyle:myCStyleName1}); 


myCStyleName1 wird über eine Funktion sichergestellt.

appliedCharacterStyle:"Bold" verursacht einen Runtime Error. deshalb characterStyle:"Bold"

Damit habe ich zwar keinen Scriptfehler aber auch keine Auswirkung auf meinen Text. Ich vermute der importierte Stil, in der Formatpalette als "[Bold]" angezeigt, wird im ID anders verwaltet.

ziemlich ratlos...
Peter


als Antwort auf: [#274799]

Suchen und ersetzen - kleines Script-Problem

Martin Fischer
  
Beiträge gesamt: 12783

7. Feb 2007, 11:38
Beitrag # 4 von 7
Beitrag ID: #274853
Bewertung:
(1756 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> appliedCharacterStyle:"Bold" verursacht einen Runtime Error. deshalb characterStyle:"Bold"

Du kannst es in der Scripting Reference leicht selber nachschlagen:
Es gibt bei den "findPrefereces" keine Eigenschaft "characterStyle", wohl aber "appliedCharacterStyle".

> Ich vermute der importierte Stil, in der Formatpalette als "[Bold]" angezeigt,
> wird im ID anders verwaltet.

Den Fehler vermute ich auch eher hier.
Wenn der importierte Stil als "[Bold]" angezeigt wird, wie kommst Du dann drauf, ihn als "Bold" anzusprechen?
Möglicherweise wird der Fehler durch das Nichterkennen des Zeichenformats "[Bold]" erzeugt. Und in der "characterStyle"-Variante wird kein Fehler erzeugt, weil diese unbekannte Eigenschaft einfach ignoriert wird. Ersetze probehalber mal "characterStyle" durch "Buxtehude", ob das zu einen Fehler führt.

Versuche alternativ das Zeichenformat nicht als string, sondern als Zeichenformatobjekt zu suchen:
Code
 mySelect.search(undefined, false, false, undefined, {appliedCharacterStyle:app.activeDocument.characterStyles.item("[Bold]")}, {appliedCharacterStyle:myCStyleName1}); 



als Antwort auf: [#274845]

Suchen und ersetzen - kleines Script-Problem

villa
Beiträge gesamt: 15

7. Feb 2007, 12:41
Beitrag # 5 von 7
Beitrag ID: #274879
Bewertung:
(1744 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nochmal Martin,
leider sammle ich zurzeit RuntimeError-Meldungen.

Das mit dem inkorrekten Befehl ist schon klar. Das Problem ist in der Referenz etwas zu finden, von dem man nicht weiß wie es ausgedrückt wird. Doch zurück zum Thema...

ID erwartet wohl hinter "appliedCharacterStyle:" ein definiertes Zeichenformat. Versuche ich einen anderen Wert, in Anführungszeichen zu übergeben, gibt es einen Fehler. Benutze ich eins meiner Formate funktioniert das Script.

Die Eckigen Klammern erscheinen immer wenn das Importierte Format nicht angezeigt werden kann. (Text rot hinterlegt).Ich habe "Bold" oder "[Bold]" in mehreren Schreibweisen getestet. Direkt oder über die characterStyles.item. Leider ohne Ergebnis.

Ich denke schon, dass es dafür eine Lösung gibt, da das gleiche Spiel über die herkömmliches "Suchen und Ersetzen" (suche "Bold" ersetze "65 Bold") vorzuglich funktioniert.

Peter


als Antwort auf: [#274853]

Suchen und ersetzen - kleines Script-Problem

Martin Fischer
  
Beiträge gesamt: 12783

7. Feb 2007, 12:54
Beitrag # 6 von 7
Beitrag ID: #274883
Bewertung:
(1741 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich kann die Sache mit dem Namen des importierten Format noch nicht ganz nachvollziehen.

Die folgende Zeile spuckt Dir die Namen der Zeichenformate im aktiven Dokument aus.

Code
alert("Zeichenformate:\r" + app.activeDocument.characterStyles.everyItem().name.join("\r")) 


Wie wird da Dein "[Bold]" wiedergegeben?

Was sagt der Objektinspektor vom ExtendScript Toolkit zu app.activeDocument.characterStyles.item("[Bold]") ?
Existiert ein solches oder ist es NULL?


als Antwort auf: [#274879]

Suchen und ersetzen - kleines Script-Problem

Martin Fischer
  
Beiträge gesamt: 12783

7. Feb 2007, 14:44
Beitrag # 7 von 7
Beitrag ID: #274939
Bewertung:
(1723 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter,

Du hast mir privat geschrieben, weil Du im Forum keine Beiträge mehr veröffentlichen kannst.
Die Ursache dafür ist mir unbekannt. Vielleicht kannst Du eine genauere Fehlerbeschreibung nachreichen.

Da das Thema aber möglicherweise von allgemeinem Interesse ist, möchte ich Dir öffentlich antworten.

Zitat Hallo Martin,
Forum lässt mich nicht mehr Posten deshalb so...

das alert gibt wie erwartet eine Liste mit meinen Zeichenformaten aus.

Mit Importiertes Format (irreführender Ausdruck - sorry) meine ich folgendes. Ich platziere ein Worddokument (reiner Text) per "drag ond dorp". Ursprüngliche Schrift ist Arial mit diversen Fettungen. Die erhaltene Textfahne ist etwas wild aber bearbeitbar... ;-).

Nachdem ich per Script einige Grundformatierungen – Absatzformateformat für Headline 1 und 2 sowie Fliestext und Formatierung der Rahmen in Form Größe und Verkettung – durchgeführt habe, ist mein Fliestext jetzt "Rotis Sans Serif" - "55". Alle Textpassagen die in der Arial noch fett dargestellt waren sind jetzt ebenfalls "Rotis Sans Serif" - "55", jedoch rot unterlegt. Bei der Kontrolle in der Zeichenpalette wird der Schriftschnitt hier mit "[Bold]" angezeigt.

Ergebnis in den Fettungen soll am Ende mein Zeichenformat mit "55 Bold" sein.


Ich vermute, Du verwechselst ein Zeichenformat (Stilvorlage) mit einem Schriftschnitt.

Was Dir mit "[Bold]" angezeigt wird ist vermutlich nicht der Name eines Zeichenformats, sondern der Schriftschnitt. Dies wird deswegen so angezeigt, weil die nach der Neuformatierung zugrundeliegende Schrift über diesen Schnitt "Bold" nicht verfügt.

Über das Menü /Schrift/Schriftart suchen kannst Du Dir diese fehlenden Schnitte gegen einen verfügbaren Schnitt austauschen.

Per Skript müßtest Du nicht nach dem appliedCharacterStyle:"[Bold]" suchen, sondern nach dem fontStyle:"[Bold]". Bei dieser Gelegenheit würde ich diesem Schriftschnitt auch gleich ein Zeichenformat zuweisen, dessen Eigenschaften Du dann mit globaler Wirkung anpassen könnest.


als Antwort auf: [#274883]
X