[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 11
Bewertung:
(9889 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
Hier Klicken X

Suchen/Ersetzen Script mittels Liste

Peter Sauseng
Beiträge gesamt: 404

5. Nov 2008, 11:25
Beitrag # 2 von 11
Beitrag ID: #373244
Bewertung:
(9882 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 11
Beitrag ID: #373275
Bewertung:
(9839 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 11
Beitrag ID: #570253
Bewertung:
(8651 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: 4638

20. Mai 2019, 11:22
Beitrag # 5 von 11
Beitrag ID: #570273
Bewertung:
(8498 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 11
Beitrag ID: #570401
Bewertung:
(8148 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 11
Beitrag ID: #571097
Bewertung:
(6684 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: 12227

12. Jul 2019, 18:32
Beitrag # 8 von 11
Beitrag ID: #571098
Bewertung:
(6673 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: 404

17. Jul 2019, 07:06
Beitrag # 9 von 11
Beitrag ID: #571115
Bewertung:
(5981 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 11
Beitrag ID: #571186
Bewertung:
(5115 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]

Suchen/Ersetzen Script mittels Liste

voko
Beiträge gesamt: 9

27. Aug 2019, 16:18
Beitrag # 11 von 11
Beitrag ID: #571653
Bewertung:
(3020 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo in die Runde,
ich habe folgendes "Problem" zu lösen. Ich möchte aus ein Excelliste in einem Indesign-Dok. nach Werten aus "Spalte A" suchen und diese durch die jeweiligen Werte aus "Spalte B" ersetzen.

Ich bin der Meinung, ich bin hier schon ziemlich richtig, nur ich habe von der ganzen Scripterei leider gar keine Ahnung.

Wie gehe ich mit dem Code des Beispiel-Scripts um?
Was muss ich damit machen?

Ich würde mich freuen, wenn jemand mir, dem "Unwissenden DAU" verraten kann, was ich tun muss.

Gruß, Voko


als Antwort auf: [#571098]
X
Hier Klicken

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
30.01.2020

Ortsunabhängig
Donnerstag, 30. Jan. 2020, 10.00 - 10.30 Uhr

Webinar

In diesem ca. halbstündigen kostenlosen Webinar stellen wir Ihnen die Neuerungen in der Version 2019 von Enfocus PitStop Pro vor.

Ja

Organisator: Impressed GmbH

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

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

Enfocus PitStop 2019
Veranstaltungen
03.02.2020 - 06.02.2020

Publisher Basic, Publisher Professional "Multimedia", Web Publisher

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Montag, 03. Feb. 2020, 17.45 Uhr - Donnerstag, 06. Feb. 2020, 20.00 Uhr

Infoabend

An unserem Infoabend zum «Publisher Basic», «Publisher Professional» und «Web Publisher» erfahren Sie, wie die Lehrgänge aufgebaut sind und durchgeführt werden. Ihr Fachspezialist zeigt Ihnen Weg, Etappen und Ziele Ihres gewünschten Lehrgangs auf. - Lerninhalt - Dauer - Zwischenprüfungen - Lernaufwand - Methodik - Lernziel - Zertifizierungsmöglichkeiten

Kostenloser Infoabend
Dauer 17.45 - 20 Uhr / ab 20 Uhr Apéro
044 447 21 74

Nein

Organisator: Isil Günalp

Kontaktinformation: Isil, E-Mailisil.guenalp AT outlook DOT com

https://www.digicomp.ch/events/infoabende/infoabend-fuer-software-anwender-innen/infoabend-publishing-lehrgaenge