[GastForen Programme Print/Bildbearbeitung Adobe InDesign RecordFindChange.jsx unter CS3

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

RecordFindChange.jsx unter CS3

Kai Rübsamen
  
Beiträge gesamt: 4684

25. Jun 2008, 13:50
Beitrag # 1 von 21
Bewertung:
(14494 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Für das Ersetzen per Grep habe ich ein Zeichenformat bold angelegt. Hier ist der einzigste Eintrag "75 bold". Das Format "bold" habe ich dann im Ersetzendialog von GREP angegeben und das Skript gestartet.

Ich hätte jetzt erwartet das in der erzeugten Textdatei unter "Change properties:"
ein Eintrag wie appliedCharacterStyle:"75 bold" oder so ähnlich steht.
Finden tut sich aber nur appliedCharacterStyle:""

1. Läuft das Skript richtig unter CS3? (Bei den anderen Werten stehen teilweise längere Nummern die ich in keinen Zusammenhang bringen kann)

2. Falls es richtig läuft, was habe ich falsch gemacht, das mein Wert nicht ausgelesen wurde?

Im Anhang noch meine erzeugte Textdatei.

Anhang:
VersuchRecordFindChange (5.65 KB)
X

RecordFindChange.jsx unter CS3

Martin Fischer
  
Beiträge gesamt: 12778

25. Jun 2008, 14:00
Beitrag # 2 von 21
Beitrag ID: #355697
Bewertung:
(14485 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ohne es geprüft zu haben, wage ich zu behaupten, dass es unter CS3 nicht zuverlässig laufen kann.

Dieses Skript wertet Einstellungen der SearchEngine von CS2 aus.
Diese SearchEngine hat sich unter CS3 grundlegend geändert – was man ja auch an der Oberfläche deutlich erkennen kann: aus einem Suchtyp wurden vier gemacht (Text, GREP, Glyphe, Objekt).

appliedCharacterStyle meint das Zeichenformat.
Der Schriftschnitt wird mit fontStyle angesprochen.


als Antwort auf: [#355692]

RecordFindChange.jsx unter CS3

Kai Rübsamen
  
Beiträge gesamt: 4684

25. Jun 2008, 14:11
Beitrag # 3 von 21
Beitrag ID: #355703
Bewertung:
(14478 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: appliedCharacterStyle meint das Zeichenformat. Der Schriftschnitt wird mit fontStyle angesprochen.


Ich hatte das so verstanden, das ich im Ersetzendialog mein Format eingebe und das das dann auch als Format ausgelesen wird. Daher erscheint mir CharacterStyle der richtige Parameter, oder?


als Antwort auf: [#355697]

RecordFindChange.jsx unter CS3

Martin Fischer
  
Beiträge gesamt: 12778

25. Jun 2008, 14:50
Beitrag # 4 von 21
Beitrag ID: #355715
Bewertung:
(14459 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Kai,

bitte teste mal die an CS3 angepasste Version.
Ich habe die Eigenschaften außerdem senkrecht (statt fortlaufend durch Komma getrennt) angeordnet.
Schließlich habe ich die Ziffer für undefined und ein paar andere für diese Zwecke uninteressante Dinge rausgefiltert.

Es werden die Eigenschaften von TEXT und GREP aufgezeichnet.

Code
//RecordFindChange_CS3.js  
//An InDesign CS3 JavaScript
//Writes the current find/change preferences to a text file so that you can copy/paste
//them into a find/change list file.

String.prototype.cleanProps = function ()
{
var s = this;
s = s.replace(/, /g,'\r');
s = s.replace(/\({/g,'');
s = s.replace(/}\)/g,'');
s = s.replace(/1851876449/g,'');
s = s.replace(/\"\"/g,'');
s = s.replace(/parent:resolve\(\"\/\"\)/g,'');
return s;
}


var myResult;
var myFindTextProperties = app.findTextPreferences.properties;
var myChangeTextProperties = app.changeTextPreferences.properties;
myFindTextProperties = myFindTextProperties.toSource().cleanProps();
myChangeTextProperties = myChangeTextProperties.toSource().cleanProps();

var myFindGrepProperties = app.findGrepPreferences.properties;
var myChangeGrepProperties = app.changeGrepPreferences.properties;
myFindGrepProperties = myFindGrepProperties.toSource().cleanProps();
myChangeGrepProperties = myChangeGrepProperties.toSource().cleanProps();

var myFile = myGetFileName();
if(myFile!=""){
//Open the file for writing.
myResult = myFile.open("w", undefined, undefined);
if(myResult != false){
myFile.writeln("//FindTextProperties:");
myFile.writeln(myFindTextProperties);
myFile.writeln("\r//ChangeTextProperties:");
myFile.writeln(myChangeTextProperties);
myFile.writeln("\r\r\r//FindGrepProperties:");
myFile.writeln(myFindGrepProperties);
myFile.writeln("\r//ChangeGrepProperties:");
myFile.writeln(myChangeGrepProperties);
myFile.close();
}
}
function myGetFileName(){
if(File.fs != "Macintosh"){
//Filter files by extension.
var myFile = File.saveDialog("Save Text File As:", "Text Files:*.txt;All Files:*")
}
else{
var myFile = File.saveDialog("Save Text File As:")
}
return myFile;
}



als Antwort auf: [#355703]
(Dieser Beitrag wurde von Martin Fischer am 25. Jun 2008, 14:58 geändert)

RecordFindChange.jsx unter CS3

Martin Fischer
  
Beiträge gesamt: 12778

25. Jun 2008, 15:19
Beitrag # 5 von 21
Beitrag ID: #355729
Bewertung:
(14444 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hier noch eine etwas überarbeitete cleanProps()-function (quick & dirty) für eine etwas kompaktere Darstellung der tatsächlich genutzten Suche/Ersetze Einstellungen.


Code
String.prototype.cleanProps = function ()  
{
var s = this;
s = s.replace(/, /g,'\r');
s = s.replace(/\({/g,'');
s = s.replace(/}\)/g,'');
s = s.replace(/[\w]+:1851876449/g,'');
s = s.replace(/[\w]+:\"\"/g,'');
s = s.replace(/[\w]+:null/g,'');
s = s.replace(/\r\r+/g,'\r');
s = s.replace(/\"\"/g,'');
s = s.replace(/parent:resolve\(\"\/\"\)/g,'');
return s;
}


Kann mir jemand einen sichereren GREP-Ausdruck zum Löschen einer ganzen Zeile, in der am Ende '1851876449' steht, nennen als diesen etwas unsauberen Ausdruck:
Code
[\w]+:1851876449 


Vor der genannten Zahl gibt es nur ein paar Buchstaben, keine Zahlen oder Leerräume oder Sonderzeichen und genau einen Doppelpunkt vor der Zahl.


als Antwort auf: [#355715]
(Dieser Beitrag wurde von Martin Fischer am 25. Jun 2008, 15:32 geändert)

RecordFindChange.jsx unter CS3

Kai Rübsamen
  
Beiträge gesamt: 4684

25. Jun 2008, 18:09
Beitrag # 6 von 21
Beitrag ID: #355759
Bewertung:
(14404 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: als diesen etwas unsauberen Ausdruck:


Welche Bedenken hast du damit?

Dein Grep sucht alle Wortzeichen direkt gefolgt von dem ":" und der Zahl. Da du keine Leerzeichen, Sonderzeichen u. Zahlen drin hast findet er also die ganze Zeile. Er würde die Zahl natürlich auch finden, wenn doch mal mehr in der Zeile steht als nur ein Wort.

Ist das das Problem?


als Antwort auf: [#355729]

RecordFindChange.jsx unter CS3

Martin Fischer
  
Beiträge gesamt: 12778

25. Jun 2008, 18:15
Beitrag # 7 von 21
Beitrag ID: #355760
Bewertung:
(14398 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ja, und der folgende Ausdruck, mit dem mir wohler wäre, greift nicht:


Code
^[\w]+:1851876449$ 


Außerdem suche ich noch nach einem Ausdruck, der mit die ganze Zeile ersetzt, wenn ein bestimmtest Zeichen ein- oder mehrmals in dieser Zeile vorkommt.

Beispiel: Sobald ein Klammeraffe einfach oder mehrfach in einer Zeile auftaucht, soll die ganze Zeile (= der ganze Absatz) gelöscht werden.
Die zu löschende Zeile könnte so aussehen:
Code
bulletChar:resolve("/@find-text-preferences/@bullet-char") 



als Antwort auf: [#355759]
(Dieser Beitrag wurde von Martin Fischer am 25. Jun 2008, 18:19 geändert)

RecordFindChange.jsx unter CS3

Kai Rübsamen
  
Beiträge gesamt: 4684

25. Jun 2008, 18:44
Beitrag # 8 von 21
Beitrag ID: #355766
Bewertung:
(14383 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: der folgende Ausdruck greift nicht:

hast du es nur im skript oder auch im dialog probiert?

>> dieser grep findet die Zahl nur wenn sie am Ende steht und am Anfang nur ein Wort vorkommt. >>> Bei mir geht das!


als Antwort auf: [#355760]

RecordFindChange.jsx unter CS3

Martin Fischer
  
Beiträge gesamt: 12778

25. Jun 2008, 18:48
Beitrag # 9 von 21
Beitrag ID: #355767
Bewertung:
(14378 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat >> dieser grep findet die Zahl nur wenn sie am Ende steht und am Anfang nur ein Wort vorkommt.


Das war meine Absicht.


Antwort auf: . >>> Bei mir geht das!

Bei mir ging das - im replace()-Befehl innerhalb des JavaScripts nicht.

Ich versuch's morgen wieder.
Da ist ein anderer Tag.


als Antwort auf: [#355766]

RecordFindChange.jsx unter CS3

Kai Rübsamen
  
Beiträge gesamt: 4684

25. Jun 2008, 18:58
Beitrag # 10 von 21
Beitrag ID: #355768
Bewertung:
(14372 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Außerdem suche ich noch nach einem Ausdruck, der mit die ganze Zeile ersetzt, wenn ein bestimmtest Zeichen ein- oder mehrmals in dieser Zeile vorkommt.


hm.
.+@.+\r ist sicherlich zu einfach als das es die Lösung sein könnte ...

Wo ist der Haken dabei?


als Antwort auf: [#355767]

RecordFindChange.jsx unter CS3

Martin Fischer
  
Beiträge gesamt: 12778

25. Jun 2008, 19:29
Beitrag # 11 von 21
Beitrag ID: #355770
Bewertung:
(14354 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Wo ist der Haken dabei?


Vermutlich in der Gier.
Bei mir werden damit alle Zeilen gelöscht.


als Antwort auf: [#355768]

RecordFindChange.jsx unter CS3

Martin Fischer
  
Beiträge gesamt: 12778

25. Jun 2008, 19:39
Beitrag # 12 von 21
Beitrag ID: #355772
Bewertung:
(14353 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Rübi,

so komme ich der Sache näher:


Code
[^\r]+@[^\r]+ 



als Antwort auf: [#355770]

RecordFindChange.jsx unter CS3

Kai Rübsamen
  
Beiträge gesamt: 4684

25. Jun 2008, 19:52
Beitrag # 13 von 21
Beitrag ID: #355774
Bewertung:
(14337 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
auch gut. Du scheinst heute ein anderes InDesign zu haben. Bei mir hat es nur die eine Zeile gelöscht.


als Antwort auf: [#355772]

RecordFindChange.jsx unter CS3

Martin Fischer
  
Beiträge gesamt: 12778

25. Jun 2008, 20:07
Beitrag # 14 von 21
Beitrag ID: #355776
Bewertung:
(14323 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Rübi,

ich arbeite gerade nicht in InDesign, sondern in der Zwischenablage. ;-)


als Antwort auf: [#355774]

RecordFindChange.jsx unter CS3

Kai Rübsamen
  
Beiträge gesamt: 4684

26. Jun 2008, 10:19
Beitrag # 15 von 21
Beitrag ID: #355810
Bewertung:
(14182 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Aufgrund heftigen Chat- und Mailverkehrs hat Martin das o.g. Skript nochmal gravierend verbessert und ich bin begeistert :) :)

Das aktualisierte Skript stellt Martin später im Premium Bereich zur Verfügung.

Neuerungen gegenüber der alten Version:

1. Es funktioniert jetzt auch unter CS3
2. Es werden nur noch die Parameter ausgelesen die man auch im Suchenfeld eingibt
3. Die .txt wird automatisch erzeugt
4. und geöffnet
5. Es gibt einen Dialog für Voreinstellungen, bei dem 1.-4. selbst bestimmt werden können.

Für "Nicht-Skripter" erschließen sich hier zusammen mit der aufgebohrten Version von FindChangeList (liegt auch im PM-Bereich) völlig neue Möglichkeiten des Suchen & Ersetzens.

Danke!!!


als Antwort auf: [#355776]
(Dieser Beitrag wurde von ruebi am 26. Jun 2008, 10:20 geändert)
X