hilfdirselbst.ch
Facebook Twitter gamper-media

Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » mehrere GREP find/change anfragen in ein Script

 

« « 1 2 3 » »  


Designer
Beiträge: 111

30. Jul 2009, 14:51

Beitrag #1 von 31
Bewertung:

(3335 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

mehrere GREP find/change anfragen in ein Script


Hallo Skript-Leute
bin mit CS3 unterwegs und möchte gerne mehrere find/change Anfragen in einem Script zusammenfassen. Die find/change Anfragen habe ich über GREP definiert und als xml Dateien im Ordner Find-Change Queries > GREP hinterlegt.
Es handelt sich dabei um Ersetzen von Absatzformaten
nun nahm ich folgendes Script zur Hand, welches bei mir aber nicht funktioniert – es kommt folgende Meldung:
JavaScript Fehler!
Fehlerzeichenfolge: changeGrep
Zeile: 8
Quelle: app.activeDocument.changeGrep ();

wo liegt der Haken?

Script:
Code
//change styles.jsx 
//An InDesign CS3 JavaScript
//
app.loadFindChangeQuery ('change 1', SearchModes.grepSearch);
app.activeDocument.changeGrep ();

app.loadFindChangeQuery ('change 2', SearchModes.grepSearch);
app.activeDocument.changeGrep ();

app.loadFindChangeQuery ('change 3', SearchModes.grepSearch);
app.activeDocument.changeGrep();

app.loadFindChangeQuery ('change 4', SearchModes.grepSearch);
app.activeDocument.changeGrep ();

app.loadFindChangeQuery ('change 5', SearchModes.grepSearch);
app.activeDocument.changeGrep ();

app.loadFindChangeQuery ('change 6', SearchModes.grepSearch);
app.activeDocument.changeGrep ();


Vielen Dankf für die Hilfe
Top

Ralf Hobirk p
Beiträge: 4485

30. Jul 2009, 15:47

Beitrag #2 von 31
Beitrag ID: #403557

Bewertung:

(3309 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

mehrere GREP find/change anfragen in ein Script


Hallo Designer,
Antwort auf: app.activeDocument.changeGrep ();


Das muss so lauten:
Zitat app.activeDocument.changeGrep();

Sprich: Du hast ein Leerzeichen zuviel drin…

---
Sonnige Grüße aus Egypt Cool
Ralf
---
MacPro 2x2,66 GHz, 10 GB | MacBook Pro 15" Unibody 2,0 GHz, 8 GB | MacBook Pro 17" 2,4 GHz, 4 GB | MacBook Pro 15" 2,5 GHz, 4 GB | alle 10.6.8 | CS5 (ID 7.0.4)
El Gouna - Life as it should be!

als Antwort auf: [#403544] Top

Designer
Beiträge: 111

30. Jul 2009, 16:06

Beitrag #3 von 31
Beitrag ID: #403560

Bewertung:

(3301 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

mehrere GREP find/change anfragen in ein Script


hallo
danke sehr! leider liegt aber noch immer ein hund vergraben. die fehlermeldung erscheint auch nach dem rauslöschen der Leerzeichen an den Stellen noch.
woran könnte es liegen?
===
korrektur:

hab jetzt noch die try und alert zeile eingefügt zum test.
wenn ich jetzt das script starte kommt zwar keine fehlermeldung mehr, dafür gleich das "Fertig", es passiert aber nichts, keine absatzformate werden ausgetauscht.
script sieht nun so aus:

Code
try   
{
app.loadFindChangeQuery ('style 1', SearchModes.grepSearch);
app.activeDocument.changeGrep();

app.loadFindChangeQuery ('style 2', SearchModes.grepSearch);
app.activeDocument.changeGrep();

app.loadFindChangeQuery ('style 3', SearchModes.grepSearch);
app.activeDocument.changeGrep();

app.loadFindChangeQuery (style 4', SearchModes.grepSearch);
app.activeDocument.changeGrep();

app.loadFindChangeQuery ('style 5', SearchModes.grepSearch);
app.activeDocument.changeGrep();

app.loadFindChangeQuery ('style 6', SearchModes.grepSearch);
app.activeDocument.changeGrep();
} catch(e) {}
alert( 'Fertig' );


als Antwort auf: [#403557]

(Dieser Beitrag wurde von Designer am 30. Jul 2009, 16:23 geändert)
Top

Quarz  M  p
Beiträge: 2368

30. Jul 2009, 16:33

Beitrag #4 von 31
Beitrag ID: #403568

Bewertung:

(3285 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

mehrere GREP find/change anfragen in ein Script


Hallo Designer,

in der Anlage findest Du mein Script zu diesem Thema.

Es sieht etwas anders aus.

Gruß
Quarz

--------------------------------------
WinXP| InDesign 6.03


als Antwort auf: [#403560] Top

Anhang:
mehrere Suchabfrgen aus Query.jsx (0.82 KB)

Martin Fischer  M  p
Beiträge: 9425

30. Jul 2009, 17:13

Beitrag #5 von 31
Beitrag ID: #403577

Bewertung:

(3269 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

mehrere GREP find/change anfragen in ein Script


Hallo Quarz,

das kann man noch etwas abkürzen.
Dann brauchst Du oben nur die Liste mit den Namen der Abfragen erweitern.
Code
// grepQueries.jsx 

var myQueries = [
'query_a',
'query_b',
'query_c'
];
// ====================

var myErrors = new Array;
for ( i = 0; i < myQueries.length; i++ )
processQuery( myQueries[i] );

if ( myErrors.length > 0 )
alert( 'Folgende Abfragen konnten nicht geladen werden:\r' + myErrors.join('\r') );

function processQuery(aQuery)
{
try
{
app.loadFindChangeQuery( aQuery, SearchModes.grepSearch );
app.activeDocument.changeGrep();
}
catch(e)
{
myErrors.push( aQuery );
}
}


Um Dich ein klein wenig zu ärgern, habe ich für den Fall, dass eine Abfrage aus der Liste nicht geladen werden kann, eine Schlussmeldung eingearbeitet (es gibt InDesigner, die lieben solche Hinweise, damit sie wissen, wo sie dran sind).
Ich weiß, Du liebst solche Störungen nicht. Deswegen verrate ich Dir auch, wie Du sie wieder los wirst.
Lösche die folgenden Zeilen oder stelle ihnen jeweils ein // voran, um sie zu deaktivieren.
Code
if ( myErrors.length > 0 ) 
alert( 'Folgende Abfragen konnten nicht geladen werden:\r' + myErrors.join('\r') );





Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#403568]

(Dieser Beitrag wurde von Martin Fischer am 30. Jul 2009, 22:40 geändert)
Top

Martin Fischer  M  p
Beiträge: 9425

30. Jul 2009, 17:18

Beitrag #6 von 31
Beitrag ID: #403578

Bewertung:

(3260 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

mehrere GREP find/change anfragen in ein Script


Hallo,

Antwort auf [ Designer ] es passiert aber nichts, keine absatzformate werden ausgetauscht.


1. Sind die angegebenen Abfragen 'style 1', 'style 2' usw. überhaupt vorhanden?
2. Die try-catch Klammer muss um jeden Ladevorgang einer Abfrage stehen, damit das Skript weiterabeiten kann, wenn es eine Abfrage nicht findet.
Statt dessen kann auch das Gerüst aus http://www.hilfdirselbst.ch/...i?post=403577#403577 verwendet werden.


Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#403560] Top

Quarz  M  p
Beiträge: 2368

30. Jul 2009, 17:27

Beitrag #7 von 31
Beitrag ID: #403582

Bewertung:

(3252 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

mehrere GREP find/change anfragen in ein Script


Hallo Martin,

danke für das neue Script.
Es ist natürlich viel bequemer, am Anfang die
Variablen einzutragen.

Im Moment habe ich keine Gelegenheit es
zu testen.
Eigentlich brauche ich es auch sehr selten,
da ich ja mit 'FindChangeByList' arbeite.

Das mit den Meldungen ist so:
Hauptsächlich stören sie mich am Anfang,
es sei denn, es ist etwas Notwendiges
auszuwählen.

Wenn es mir aber am Schluss eine Fehlermeldung
gibt, soll es mir schon Recht sein.

Merksatz
So wenig wie möglich - so viel wie notwendig.

Gruß
Quarz

--------------------------------------
WinXP| InDesign 6.03


als Antwort auf: [#403577] Top

Designer
Beiträge: 111

30. Jul 2009, 17:44

Beitrag #8 von 31
Beitrag ID: #403586

Bewertung:

(3245 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

mehrere GREP find/change anfragen in ein Script


hallo beide
danke euch.
ich hab nun den neu vorgschlagenen code verwendet
Code
var myQueries = [   
'make PDF 1',
'make PDF 2',
'make PDF 3',
'make PDF 4',
'make PDF 5',
'make PDF 6',
'make PDF 7',
'make PDF 8',
'make PDF 9',
'make PDF 10'

];
// ====================

var myErrors = new Array;
for ( i = 0; i < myQueries.length; i++ )
processQuery( myQueries[i] );

if ( myErrors.length > 0 )
alert( 'Folgende Abfragen konnten nicht geladen werden:\r' + myErrors.join('\r') );

function processQuery(aQuery)
{
try
{
app.loadFindChangeQuery( aQuery, SearchModes.grepSearch );
app.activeDocument.changeGrep();
}
catch(e)
{
myErrors.push( aQuery );
}
}


habe meine xmls nochmals umbenannt, alles nochmals schön abgespeichert und die xmls in den Ordnern Find-Change Queries (in beide vorhandene) in den Ordner GREP hinterlegt.
was mach ich falsch?

danke euch

als Antwort auf: [#403582] Top

Quarz  M  p
Beiträge: 2368

30. Jul 2009, 17:48

Beitrag #9 von 31
Beitrag ID: #403587

Bewertung:

(3240 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

mehrere GREP find/change anfragen in ein Script


Hallo Designer,

da gibt es Unterordner für
Glyph - GREP - Object - Text

Hast Du das bedacht?

Gruß
Quarz

--------------------------------------
WinXP| InDesign 6.03


als Antwort auf: [#403586] Top

Designer
Beiträge: 111

30. Jul 2009, 21:41

Beitrag #10 von 31
Beitrag ID: #403596

Bewertung:

(3188 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

mehrere GREP find/change anfragen in ein Script


hallo quarz
hab noch immer knopf in der leitung?
sie müssen ja nicht in allend ordnern liegen oder? es geht nur um den austausch von absatzformaten, da ist doch der Ordner GREP schon ok oder?

grüsse
Designer

als Antwort auf: [#403587] Top

Quarz  M  p
Beiträge: 2368

30. Jul 2009, 22:00

Beitrag #11 von 31
Beitrag ID: #403598

Bewertung:

(3178 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

mehrere GREP find/change anfragen in ein Script


Hallo Designer,

Antwort auf: Die find/change Anfragen habe ich über GREP definiert und als xml Dateien im Ordner Find-Change Queries > GREP hinterlegt.

Du hinterlegst keine xml-Dateien, sondern speicherst sie
einfach mit einem Namen Deiner Wahl in S & E ab.

Gruß
Quarz

--------------------------------------
WinXP| InDesign 6.03


als Antwort auf: [#403596] Top

Designer
Beiträge: 111

30. Jul 2009, 22:21

Beitrag #12 von 31
Beitrag ID: #403600

Bewertung:

(3169 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

mehrere GREP find/change anfragen in ein Script


sorry ich komm nicht nach.
wenn ich "suchen/ersetzen" abfragen speichere, die ich später in ein script zusammenziehen will, so gibt das doch automatisch xml-Files, die ich dann eben in den GREP Ordner lege.
wie meinst du mit
Zitat einem Namen Deiner Wahl in S & E ab.


ich blick nicht durch.

Danke

als Antwort auf: [#403598] Top

Martin Fischer  M  p
Beiträge: 9425

30. Jul 2009, 22:39

Beitrag #13 von 31
Beitrag ID: #403604

Bewertung:

(3148 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

mehrere GREP find/change anfragen in ein Script


Antwort auf [ designer ] ich blick nicht durch.

So geht es mir langsam auch. ;-)

Antwort auf [ designer ] was mach ich falsch?

Vielleicht solltest Du erst mal versuchen, die Aufgabe zunächst für Dich (und dann für uns) möglichst klar und präzise zu formulieren.

Du könntest in diesem Zusammenhang z.B. klären, was genau hinter 'style 1', 'style 2' ... und was hinter 'make PDF 1', 'make PDF 2' ... steckt und wie Du von Hand das erledigst, was Du später per Skript automatisieren möchtest.

Mit jedem Beitrag, den Du veröffentlichst, wird mir Deine Aufgabenstellung unklarer.
Dem könntest Du abhelfen, falls Du tatsächlich an einer Unterstützung interessiert bist.

Unabhängig von diesen Unklarheiten muss man, um Absatzformate auszutauschen, also z.B. allen Absätzen mit dem Absatzformat AF 1 das Absatzformat AF 2 zuzuweisen, nicht die GREP-Suche bemühen.
Das geht auch mit der Textsuche.

Dafür muss aber das o.g. Skript geringfügig angepasst werden.

1. Sichere Dir in der Suchen/Ersetzen-Palette eine Textsuche nach AF 1, ersetzen durch AF 2 z.B. unter dem Namen 'AF1-AF2' (s. Anhang).
2. Führe diesen Ersetze-Vorgang zum Test einmal aus.
3. Mach diesen Ersetze-Vorgang rückgängig.
4. Führe das folgende Skript für den Textersetzen-Vorgang aus.
Code
// textQueries.jsx 

var myQueries = [
'AF1-AF2',
// weitere Textersetzen-Abfragen
];
// ====================

var myErrors = new Array;
for ( i = 0; i < myQueries.length; i++ )
processQuery( myQueries[i] );

if ( myErrors.length > 0 )
alert( 'Folgende Abfragen konnten nicht geladen werden:\r' + myErrors.join('\r') );

function processQuery(aQuery)
{
try
{
app.loadFindChangeQuery( aQuery, SearchModes.textSearch );
app.activeDocument.changeText();
}
catch(e)
{
myErrors.push( aQuery );
}
}


Wenn Du lustig bist (es ist nicht nötig), kannst Du Dir die über die Suchen/Ersetzen-Palette erzeugte XML-Datei /Users/[you]/Library/Preferences/Adobe InDesign/Version 6.0/de_DE/Find-Change Queries/Text/AF1-AF2.xml anschauen.

Sie könnte etwa so aussehen:
Code
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Query>
<Header>
<Version major="5" minor="1">
</Version>
<Application value="Adobe InDesign">
</Application>
<QueryType value="Text" qid="0">
</QueryType>
</Header>
<Description>
<FindString value="">
</FindString>
<ReplaceString value="">
</ReplaceString>
<FindChangeOptions>
<IncludeLockedLayers value="0">
</IncludeLockedLayers>
<IncludeLockedStories value="0">
</IncludeLockedStories>
<IncludeMasterPages value="0">
</IncludeMasterPages>
<IncludeHiddenLayers value="0">
</IncludeHiddenLayers>
<IncludeFootnotes value="1">
</IncludeFootnotes>
<CaseSensitive value="0">
</CaseSensitive>
<EntireWord value="0">
</EntireWord>
<KanaSensitive value="1">
</KanaSensitive>
<WidthSensitive value="1">
</WidthSensitive>
</FindChangeOptions>
<FindFormatSettings>
<TextAttribute type="pstyle" value="AF 1">
</TextAttribute>
</FindFormatSettings>
<ReplaceFormatSettings>
<TextAttribute type="pstyle" value="AF 2">
</TextAttribute>
<TextAttribute type="changecondmode" value="0">
</TextAttribute>
</ReplaceFormatSettings>
</Description>
</Query>


Antwort auf [ Quarz ] So wenig wie möglich - so viel wie notwendig.


Bisweilen bin ich der Überzeugung, genug ist nicht genug.
Und es gibt viele unterschiedliche Möglichkeiten, voran zu kommen, wenn man erst mal herausgefunden hat, wie es zu Fuß geht. ;-)


Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#403600] Top

Anhang:
TextSuchenErsetzen.jpg (58.3 KB)

Quarz  M  p
Beiträge: 2368

30. Jul 2009, 22:52

Beitrag #14 von 31
Beitrag ID: #403606

Bewertung:

(3135 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

mehrere GREP find/change anfragen in ein Script


Hallo Martin,

sehr schön 'Ministry of Silly Walks.
Passt gut in diesem Zusammenhang ;-)

Gruß
Quarz

--------------------------------------
WinXP| InDesign CS4ver6.03


als Antwort auf: [#403604] Top

Martin Fischer  M  p
Beiträge: 9425

30. Jul 2009, 22:58

Beitrag #15 von 31
Beitrag ID: #403607

Bewertung:

(3132 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

mehrere GREP find/change anfragen in ein Script


Hallo Skripter,

ich versuche try-catch Klammern möglichst zu vermeiden.

Kennt jemand einen Weg, per Skript zu prüfen ob
a. eine Suchabfrage mit einem bestimmten Namen vorhanden oder
b. welche Suchabfragen für einen bestimmten Modus (Text, GREP ...) verfügbar sind

ohne das Find-Change Queries-Verzeichnis zu durchforsten (wie im Skript unten)?

Code
// listOfTextAndGrepQueries.jsx 
//DESCRIPTION: Listet die verfügbaren Text- und Grep-Abfragen auf.

// Pfade zu den Abfragen
var myPath = ($.os.search(/windows/i) != -1)
? '~/Anwendungsdaten/Adobe/InDesign/Version 6.0/de_DE/Find-Change Queries/' // Win
: '~/Library/Preferences/Adobe InDesign/Version 6.0/de_DE/Find-Change Queries/'; // Mac

var myTextQueries = new Array;
var myGrepQueries = new Array;

var myTextQueryFolder = new Folder(myPath + 'Text');
var myTextQueryFiles = myTextQueryFolder.getFiles('*.xml');

var myGrepQueryFolder = new Folder(myPath + 'Grep');
var myGrepQueryFiles = myGrepQueryFolder.getFiles('*.xml');

getQueries(myTextQueryFiles, myTextQueries);
getQueries(myGrepQueryFiles, myGrepQueries);

var mySeparator = (myTextQueries.length + myGrepQueries.length <= 50)
? '\r'
: ',\u2003'

alert ('Suchen/Ersetzen-Abfragen\r===== [ T E X T ] =====\r' +
myTextQueries.join(mySeparator) +
'\r\r===== [ G R E P ] =====\r' +
myGrepQueries.join(mySeparator)
);


function getQueries(myFiles, myArray)
{
for (var i = 0; i < myFiles.length; i++)
myArray.push(File.decode(myFiles[i].name).replace(/\.xml\b/i,''));
}


Antwort auf [ Quarz ] Passt gut in diesem Zusammenhang ;-)

Ja, das ging mir bei der Formulierung des obigen Beitrags ständig im Kopf rum und hätte die eigentliche dazugehörige Antwort fast gar vereitelt. ;-)


Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#403604]

(Dieser Beitrag wurde von Martin Fischer am 31. Jul 2009, 09:11 geändert)
Top
« « 1 2 3 » »  


Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » mehrere GREP find/change anfragen in ein Script


^