[GastForen Programme Print/Bildbearbeitung Adobe InDesign Suchen/Ersetzen Script mittels Liste

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

Suchen/Ersetzen Script mittels Liste

Harald Zwer
Beiträge gesamt: 306

5. Nov 2008, 11:02
Beitrag # 1 von 10
Bewertung:
(6564 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich bin auf der Suche nache einem einfache Script für CS3, welches ein Suchen/Ersetzen vornimmt. Im Tutorial habe ich es leider nicht gefunden. Vielleicht ist es zu einfach?

Ich möchte in diesem Script eine Ersetzungsliste definieren. Also zum Beispiel:
Suche " " und ersetze durch "^s"

Vielen Dank für die Hilfe

Harald
X

Suchen/Ersetzen Script mittels Liste

Peter Sauseng
Beiträge gesamt: 401

5. Nov 2008, 11:25
Beitrag # 2 von 10
Beitrag ID: #373244
Bewertung:
(6557 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
In InDesign CS3 gibt es bei den "Skripten" unter "Anwendung / Samples / JavaScript" das Skript "FindChangeByList.jsx".

In der Datei "FindChangeList.txt" im Ordner "FindChangeSupport" kannst Du Deine Ersetzungsliste definieren.

Falls Du ein eigenständiges Skript schreiben möchtest, habe ich hier ein Beispiel:
Code
var myDoc = app.documents[0]; 

if (app.documents.length != 0){

var mySearch = new Array
var myReplace = new Array

mySearch[0] = "\\x{0080}"; myReplace[0] = "€";
mySearch[1] = "\\x{0081}"; myReplace[1] = "#";
mySearch[2] = "\\x{0082}"; myReplace[2] = "‚";
mySearch[3] = "\\x{0083}"; myReplace[3] = "ƒ";
mySearch[4] = "\\x{0084}"; myReplace[4] = "„";
mySearch[5] = "\\x{0085}"; myReplace[5] = "…";

// Zurücksetzen der Suchoptionen
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;

app.findChangeGrepOptions.includeFootnotes = true;
app.findChangeGrepOptions.includeHiddenLayers = false;
app.findChangeGrepOptions.includeLockedLayersForFind = false;
app.findChangeGrepOptions.includeLockedStoriesForFind = false;
app.findChangeGrepOptions.includeMasterPages = false;

for (myCounter = 0; myCounter < mySearch.length; myCounter++){
app.findGrepPreferences.findWhat = mySearch[myCounter];
app.changeGrepPreferences.changeTo = myReplace[myCounter];
myDoc.changeGrep();
}

// Zurücksetzen der Suchoptionen
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;

alert ("Alle Ersetzvorgänge durchgeführt!");
}
else{
alert ("Kein Dokument geöffnet.");
}


In diesem Beispiel wird die GREP-Suche verwendet. Wenn Du die Text-Suche verwenden möchtest, dann sind alle "findGrep" und "changeGrep"-Befehle durch "findText" bzw. "changeText" zu ersetzen.

Liebe Grüße, Peter

---------------------------------------------------------------------
InDesign CC 2018 | Windows 10 Pro (64-bit)


als Antwort auf: [#373237]

Suchen/Ersetzen Script mittels Liste

Harald Zwer
Beiträge gesamt: 306

5. Nov 2008, 14:53
Beitrag # 3 von 10
Beitrag ID: #373275
Bewertung:
(6514 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter,

vielen Dank für die wertvollen Hinweise!

Harald


als Antwort auf: [#373244]

Suchen/Ersetzen Script mittels Liste

Kalonji
Beiträge gesamt: 8

17. Mai 2019, 16:10
Beitrag # 4 von 10
Beitrag ID: #570253
Bewertung:
(5326 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter,

dein mittlerweile etwas in die Jahre gekommener Beitrag hat mir heute sehr geholfen - daher zunächst einmal vielen Dank dafür!

Ich habe mir auf dieser Basis nun etliche suchen&ersetzen-Schritte eingerichtet - diese möchte ich zur Sicherheit aber nur auf den aktiven Textabschnitt anwenden.

Ich bin absoluter Scripting-Neuling und habe bereits versucht, durch Internetrecherche eine Lösung zu finden. Auch hier im Forum wurde das Thema schon behandelt:
https://www.hilfdirselbst.ch/..._Skript_P252806.html

Leider ist mir die "Fachsprache" noch zu fremd bzw. verstehe ich trotz aller Bemühungen nicht, was ich tun muss...

Ich würde mich freuen, wenn mir hier jemand auf die Sprünge helfen könnte!

Danke & VG,
Christoph


als Antwort auf: [#373244]

Suchen/Ersetzen Script mittels Liste

Kai Rübsamen
  
Beiträge gesamt: 4630

20. Mai 2019, 11:22
Beitrag # 5 von 10
Beitrag ID: #570273
Bewertung:
(5173 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph, schau mal ob du oben Zugriff auf die ID-Skriptsammlung hast. Evtl. brauchst du den Status eines Members (über Spende). Hier gibt es "FindChangeByList_mod3.jsx". Dort hat Martin Fischer vor Jahren einen kleinen Dialog spendiert, wo du die aktuelle story auswählen kannst.
Gruß Kai Rübsamen


als Antwort auf: [#570253]

Suchen/Ersetzen Script mittels Liste

Kalonji
Beiträge gesamt: 8

27. Mai 2019, 14:00
Beitrag # 6 von 10
Beitrag ID: #570401
Bewertung:
(4823 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

vielen Dank für deine Antwort!
Ich habe das Script gefunden und getestet. Allerdings ist es ja so, dass dieses auf suchen & ersetzen per txt-Datei/Liste basiert, ich hingegen aber das eigenständige Script von Peter an meine Bedürfnisse angepasst habe. Mit meinen limiterten Kenntnissen habe ich keine Möglichkeit gefunden, die beiden Funktionsweisen miteinander zu kombinieren. Da ich schon über 100 feste suchen&ersetzen-Begriffe in das Script aufgenommen habe, würde ich die Arbeit nur ungern doppelt machen. Lässt sich der Dialog zur Auswahl der Story irgendwie in "mein" Script übernehmen oder hast du vielleicht noch eine andere Lösung für mich?

Danke & viele Grüße,
Christoph


als Antwort auf: [#570273]

Suchen/Ersetzen Script mittels Liste

Kalonji
Beiträge gesamt: 8

12. Jul 2019, 17:27
Beitrag # 7 von 10
Beitrag ID: #571097
Bewertung:
(3359 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
*push* ... hat sonst vielleicht jemand eine Idee, bzw. kann mir hier weiterhelfen?


als Antwort auf: [#570401]

Suchen/Ersetzen Script mittels Liste

Martin Fischer
  
Beiträge gesamt: 12089

12. Jul 2019, 18:32
Beitrag # 8 von 10
Beitrag ID: #571098
Bewertung:
(3348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Versuch's mal damit.

Code
app.doScript(main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, "GREP-Ersetzungen.jsx"); 

function main()
{
if (app.documents.length == 0)
{
alert ("Kein Dokument geöffnet.");
exit();
}

var myDoc = app.documents.firstItem();
var mySearch = new Array;
var myReplace = new Array;
var myError = new Array;
var myRange = (app.selection.length > 0 && app.selection[0].hasOwnProperty('parentStory')) ? app.selection[0].parentStory : myDoc;

mySearch[0] = "\\x{0080}"; myReplace[0] = "€";
mySearch[1] = "\\x{0081}"; myReplace[1] = "#";
mySearch[2] = "\\x{0082}"; myReplace[2] = "‚";
mySearch[3] = "\\x{0083}"; myReplace[3] = "ƒ";
mySearch[4] = "\\x{0084}"; myReplace[4] = "„";
mySearch[5] = "\\x{0085}"; myReplace[5] = "…";

// Zurücksetzen der Suchoptionen
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;

app.findChangeGrepOptions.includeFootnotes = true;
app.findChangeGrepOptions.includeHiddenLayers = false;
app.findChangeGrepOptions.includeLockedLayersForFind = false;
app.findChangeGrepOptions.includeLockedStoriesForFind = false;
app.findChangeGrepOptions.includeMasterPages = false;

for (myCounter = 0; myCounter < mySearch.length; myCounter++)
{
app.findGrepPreferences.findWhat = mySearch[myCounter];
app.changeGrepPreferences.changeTo = myReplace[myCounter];
try
{
myRange.changeGrep();
}
catch(e)
{
myError.push(mySearch[myCounter] + ' &#8594; ' + myReplace[myCounter] + ' :\t' + e.message);
};
}

// Zurücksetzen der Suchoptionen
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;

if (myError.length > 0)
alert('Achtung!\n' + myError.join('\n'));
else
alert('Fertig!');
}



-----
edit:
War vorhin in Eile.
Deswegen noch ein Hinweis hinterher.
Das Skript arbeitet in Abhängigkeit einer möglichen Auswahl.
1. Ist nichts oder kein Textrahmen und keine Text ausgewählt, führt es die Ersetzungen über das gesamte Dokument aus.
2. Ist Text oder ein Textrahmen ausgewählt, dann ist der entsprechende Textabschnitt von den Ersetzungen betroffen.

Ein Strg-Z (Zurück) nach Ausführung des Skripts macht alle Änderungen wieder rückgängig.

Und noch eins.
Anwendern, welche die Ersetzungsliste noch nicht wie folgt aufgebaut haben,
Code
mySearch[0] = "\\x{0080}"; myReplace[0] = "€";   
mySearch[1] = "\\x{0081}"; myReplace[1] = "#";

empfehle ich, die Liste eher so aufzubauen:
Code
mySearch.push("\\x{0080}"); myReplace.push("€");  
mySearch.push("\\x{0081}"); myReplace.push("#");


Damit spart man sich die vielen doppelten Eingaben von Indices für den Array.

Viele Grüße
Martin




als Antwort auf: [#571097]
(Dieser Beitrag wurde von Martin Fischer am 12. Jul 2019, 20:35 geändert)

Suchen/Ersetzen Script mittels Liste

Peter Sauseng
Beiträge gesamt: 401

17. Jul 2019, 07:06
Beitrag # 9 von 10
Beitrag ID: #571115
Bewertung:
(2656 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für den Tipp bzgl. ".push", Martin!

---------------------------------------------------------------------
InDesign CC 2018 | Windows 10 Pro (64-bit)


als Antwort auf: [#571098]

Suchen/Ersetzen Script mittels Liste

Kalonji
Beiträge gesamt: 8

23. Jul 2019, 09:31
Beitrag # 10 von 10
Beitrag ID: #571186
Bewertung:
(1790 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen, vielen Dank, Martin! Du hast mir sehr geholfen - das ist die Lösung aller Probleme (zumindest für mich ;-))

Eine kleine Anmerkung allerdings noch:
Nach meinen Tests wirkt sich diese Version des Scripts nur auf das gesamte Dokument aus (wenn nichts ausgewählt ist), bzw. auf den Textabschnitt bei angewähltem Textrahmen - nicht jedoch auf eine Textauswahl. Wenn ich Text ausgewählt habe und das Script laufen lasse, wird mir trotzdem alles bis zum Ende des Textabschnitts ersetzt.
In meinem Fall spielt das aber keine Rolle, ich kann bestens mit Textabschnitten arbeiten - wollte es nur kurz erwähnt haben.

Herzlichen Dank noch einmal!


als Antwort auf: [#571098]
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.

Veranstaltungen
21.08.2019

Affinity Photo, Affinity Designer und Affinity Publisher

Schulungsraum von pre2media – Dammstrasse 8, 8610 Uster
Mittwoch, 21. Aug. 2019, 09.00 - 17.00 Uhr

Referat

Alle reden davon – wir zeigen ihnen kompakt was in den einzelnen ­Programmen wirklich steckt. Sind die Programme von Affinity – bereits heute – eine Alternative zu den Adobe-Programmen? Was versteht ­Affinity unter StudioLink und der vollständigen Integration der Affinity-Apps. Sie können jedes Affinity-Referat einzeln buchen. Oder alle drei Referate zusammen, bequem an einem Tag.

Mittwoch, 21. August 2019
9.00 bis 11.00 Affinity Photo Bildbearbeitung CHF 90.00
13.00 bis 15.00 Affinity Designer Grafikdesign CHF 90.00
15.00 bis 17.00 Affinity Publisher Layoutprogramm CHF 90.00
Alle drei Affinity Programme zusammen (6 Lektionen) CHF 220.00

Diese Referate werden auch noch am Fr. 13. September und am Di. 22. Oktober 2019 durchgeführt.

Ja

Organisator: pre2media gmbh, Dammstrasse 8, 8610 Uster, info@pre2media.ch, www.pre2media.ch

Kontaktinformation: Peter Jäger oder Roger Thurnherr, E-Mailinfo AT pre2media DOT ch

https://www.pre2media.ch/-1/de/kurse/affinity-referat/

Affinity-Referat bei pre2media
Veranstaltungen
22.08.2019

Impressed GmbH, Hamburg
Donnerstag, 22. Aug. 2019, 10.00 - 10.30 Uhr

Webinar

Wir stellen Ihnen in diesem kostenlosen ca. halbstündigen Webinar das neue Enfocus Switch PDF Review Modul zur Freigabe von PDF-Druckdaten vor.

Ja

Organisator: Impressed GmbH

Kontaktinformation: Detlef Grimm, E-Mailschulungen AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=250

Enfocus Switch PDF Review Modul
Hier Klicken