[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:
(15889 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: 483

5. Nov 2008, 11:25
Beitrag # 2 von 11
Beitrag ID: #373244
Bewertung:
(15882 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


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:
(15839 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:
(14651 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: 4684

20. Mai 2019, 11:22
Beitrag # 5 von 11
Beitrag ID: #570273
Bewertung:
(14498 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.


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:
(14148 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:
(12684 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: 12778

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


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: 483

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


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:
(11115 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:
(9020 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