[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt IndexFromCharacterStyle CS 4

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

IndexFromCharacterStyle CS 4

Guzzi-Birgit
Beiträge gesamt: 81

11. Dez 2009, 10:50
Beitrag # 1 von 65
Bewertung:
(44533 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo liebe HDSler,

ich muss demnächst ein Buch mit 700 Seiten layouten, welches 2 Indexe bekommen soll, einmal für Orte und einmal für Namen.

Vor ein paar Jahren haben wir das Problem bei einem ähnlichen Projekt mit dem Script »IndexFromCharakterStyle« von Herrn Fischer prima lösen können.

Leider läuft dieses Script wohl nur in CS2. Wenn ich versuche es in CS 4 zu nutzen kommt folgende Fehlermeldung:

Fehlernummer: 55
Fehlerzeichenfolge: Objekt unterstützt Eigenschaft oder Methode findPreferences nicht
Datei:/Applications/Adobe InDesign CS4/Scripts/Script Panel/IndexFromCharakterStyle_CS2.jsx
Zeile: 59
Quelle: app.findPreferences = null;
app.changePreferences = null


Auch über die Suche konnte ich für CS 4 nicht fündig werden.
Besteht die Möglichkeit dieses Script für CS4 zu modifizieren? Leider habe ich davon NULL Ahnung.

Kann mir da jemand weiterhelfen?

Lieben Dank im voraus!
Birgit

MAC Power PC G5
InDesign CS4 Version 6.0.4
X

IndexFromCharacterStyle CS 4

Martin Fischer
  
Beiträge gesamt: 12775

11. Dez 2009, 11:19
Beitrag # 2 von 65
Beitrag ID: #427412
Bewertung:
(44463 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Birgit,

es gibt eine Version des Skripts für CS3, die auch in CS4 funktionieren sollte:
IndexFromCharacterStyle_CS3a.jsx


als Antwort auf: [#427406]

IndexFromCharacterStyle CS 4

Guzzi-Birgit
Beiträge gesamt: 81

11. Dez 2009, 11:27
Beitrag # 3 von 65
Beitrag ID: #427420
Bewertung:
(44460 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Herr Fischer,
vielen Dank für die schnelle Antwort!
Wenn ich versuche das Script in CS 4 anzuwenden, dann erhalte ich folgende Fehlermeldung:

JavaScript Fehler!
Fehlernummer: 8
Fehlerzeichenfolge: Syntaxfehler
Datei: /Applications/Adobe InDesign CS4/Scripts/Scripts Paneld/IndexFromCharacterstyle_CS3a.jsx
Zeile: 1
Quelle: {\rtf1/mac/ansicpg10000\cocoartf824\cocoasubrtf480
Problematischer Text:\


Was mache ich da falsch?

LG
Birgit


als Antwort auf: [#427412]

IndexFromCharacterStyle CS 4

Martin Fischer
  
Beiträge gesamt: 12775

11. Dez 2009, 11:35
Beitrag # 4 von 65
Beitrag ID: #427421
Bewertung:
(44451 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Birgit,

> Was mache ich da falsch?

Du hast den Code im RTF-Format gesichert.
Es muß als reine Text-Datei gesichert werden.

Siehe auch Skripte installieren.


als Antwort auf: [#427420]

IndexFromCharacterStyle CS 4

Guzzi-Birgit
Beiträge gesamt: 81

11. Dez 2009, 11:42
Beitrag # 5 von 65
Beitrag ID: #427422
Bewertung:
(44448 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ups, Sorry! Ja, wer lesen kann ist klar im Vorteil :-)

Jetzt hab ich das nochmal als reine Text-Datei gesichert. Nun kommt folgende Fehlermeldung:

JavaScript Fehler!
Fehlernummer: 25
Fehlerzeichenfolge: Erwartet: )
Datei: /Applications/Adobe InDesign CS 4/Scripts/Scripts Panel/IndexFormCharacterstyle_CS3a.jsx
Zeile: 27


Was mache ich jetzt noch falsch?

LG
Birgit


als Antwort auf: [#427421]

IndexFromCharacterStyle CS 4

Martin Fischer
  
Beiträge gesamt: 12775

11. Dez 2009, 12:12
Beitrag # 6 von 65
Beitrag ID: #427432
Bewertung:
(44420 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Birgit,

hast Du den kompletten Code kopiert?
Schau mal nach, ob, die letzte Zeile tatsächlich mit myList ); abschließt.


als Antwort auf: [#427422]

IndexFromCharacterStyle CS 4

Guzzi-Birgit
Beiträge gesamt: 81

14. Dez 2009, 07:09
Beitrag # 7 von 65
Beitrag ID: #427598
Bewertung:
(44355 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Herr Fischer,

ich hab den Code aus dem Link kopiert, den Sie mir genannt hatte:

Code
// IndexFromCharacterStyle_CS3a.jsx  
//
var myErr = mySucc = 0;
var myList = ""
app.changeTextPreferences = NothingEnum.nothing;
app.findTextPreferences = NothingEnum.nothing;

app.findTextPreferences.appliedCharacterStyle = "Index"
doc = app.activeDocument
if( doc.indexes.length == 0 )
doc.indexes.add()
f = doc.findText()
for( oneEntry = f.length-1; oneEntry > -1; oneEntry-- ) {
doc.indexes[0].topics.add( f[oneEntry].contents )
try {
doc.indexes[0].topics.item( f[oneEntry].contents).pageReferences.add( f[oneEntry], PageReferenceType.currentPage ) ;
mySucc++;
}
catch(e)
{
myList += f[oneEntry].contents + "\r" ;
myErr++;
}
}

alert( "Das Ergebnis:\r" + mySucc + " x erfolgreich\r" + myErr + " x versagt:\r-----------\r"



Fehlt da was?

Birgit


als Antwort auf: [#427432]
(Dieser Beitrag wurde von Martin Fischer am 15. Feb 2011, 19:40 geändert)

IndexFromCharacterStyle CS 4

Martin Fischer
  
Beiträge gesamt: 12775

14. Dez 2009, 08:18
Beitrag # 8 von 65
Beitrag ID: #427604
Bewertung:
(44341 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Birgit,

Antwort auf: Fehlt da was?


Ja.

Die letzte Zeile muss so lauten:

Code
alert( "Das Ergebnis:\r" + mySucc + " x erfolgreich\r" + myErr + " x versagt:\r-----------\r" + myList ); 


Man kann's auch so schreiben:

Code
alert( "Das Ergebnis:\r" +  
mySucc +
" x erfolgreich\r" +
myErr +
" x versagt:\r-----------\r" +
myList
);



als Antwort auf: [#427598]
(Dieser Beitrag wurde von Martin Fischer am 14. Dez 2009, 08:46 geändert)

IndexFromCharacterStyle CS 4

Guzzi-Birgit
Beiträge gesamt: 81

14. Dez 2009, 08:47
Beitrag # 9 von 65
Beitrag ID: #427611
Bewertung:
(44327 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Herr Fischer,

ich mags schon gar nicht mehr sagen . . . aber ich hab schon wieder ne andere Fehlermeldung:

JavaScript Fehler!
Fehlernummer: 30477
Fehlerzeichenfolge: Ungültiger Wert für Einrichtung der Eigenschaft "appliedCharacterStyle". String, CharacterStyle or NothingEnum enumerator erwartet aber "Index" erhalten.
Datei: /Applications/Adobe InDesign CS4/Scripts/Sripts Panel/IndexFromCharacterStyle_CS4.jsx
Zeile: 8
Quelle:
app.findTextPreferences.appliedCharacterStyle = "Index"


Und nun?

Gruß
Birgit


als Antwort auf: [#427604]

IndexFromCharacterStyle CS 4

Martin Fischer
  
Beiträge gesamt: 12775

14. Dez 2009, 09:10
Beitrag # 10 von 65
Beitrag ID: #427614
Bewertung:
(44313 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nun, ich vermute, dass das Skript kein Zeichenformat mit dem Namen 'Index' findet.

Im Originalskript habe ich inzwischen eine entsprechende Abfrage eingearbeitet.


als Antwort auf: [#427611]

IndexFromCharacterStyle CS 4

Guzzi-Birgit
Beiträge gesamt: 81

14. Dez 2009, 09:21
Beitrag # 11 von 65
Beitrag ID: #427615
Bewertung:
(44300 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ach so, dann hab ich nen Gedankenfehler gemacht.

Bei dem Script für CS 2 war es so, dass man nach der gewünschten Zeichenstilvorlage gefragt wurde. Das war für uns optimal, weil wir ja zwei verschiedene Indexe benötigen (Personen und Orte) und dementsprechend natürlich auch zwei verschiedene Zeichenstilvorlagen angelegt haben.

Wenn ich die eine Stilvorlage in INDEX umbenenne, dann funktioniert es! Aber wie bekomme ich dann den zweiten Index hin?

LG
Birgit


als Antwort auf: [#427614]

IndexFromCharacterStyle CS 4

Martin Fischer
  
Beiträge gesamt: 12775

14. Dez 2009, 09:39
Beitrag # 12 von 65
Beitrag ID: #427620
Bewertung:
(44286 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das Skript ist nicht für mehrere verschiedene Indexe ausgelegt.

Aber wenn Du das Zeichenformat auswählen möchtest, dann versuch's mal damit:
Code
// IndexFromCharacterStyle_CS4.jsx 
//
var myErr = mySucc = 0;
var myList = "";
var doc = app.activeDocument
var myCharacterStyle = myDisplayDialog(doc);
app.changeTextPreferences = NothingEnum.nothing;
app.findTextPreferences = NothingEnum.nothing;


app.findTextPreferences.appliedCharacterStyle = myCharacterStyle;
if( doc.indexes.length == 0 )
doc.indexes.add()
f = doc.findText()
for( oneEntry = f.length-1; oneEntry > -1; oneEntry-- ) {
var _topic = doc.indexes[0].topics.add( f[oneEntry].contents )
try {
_topic.pageReferences.add( f[oneEntry], PageReferenceType.currentPage ) ;
mySucc++;
}
catch(e)
{
myList += f[oneEntry].contents + "\r" ;
myErr++;
}
}

alert( "Das Ergebnis:\r" + mySucc + " x erfolgreich\r" + myErr + " x versagt:\r-----------\r" + myList );


function myDisplayDialog(doc){
var myFieldWidth = 120;

var myCharStyles = doc.characterStyles.everyItem().name;

var myDialog = app.dialogs.add({name:"Index-Begriffe"});
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Zeichenformat:", minWidth:myFieldWidth});
}
with(dialogColumns.add()){
var mySourceDropdown = dropdowns.add({stringList:myCharStyles, selectedIndex:myCharStyles.length-1});
}
}
}
var myResult = myDialog.show();
if(myResult == true){
var theCharStyle =myCharStyles[mySourceDropdown.selectedIndex];
myDialog.destroy();
}
else{
myDialog.destroy()
exit();
}
return theCharStyle;
}



als Antwort auf: [#427615]
(Dieser Beitrag wurde von Martin Fischer am 12. Nov 2010, 21:46 geändert)

IndexFromCharacterStyle CS 4

Guzzi-Birgit
Beiträge gesamt: 81

14. Dez 2009, 09:44
Beitrag # 13 von 65
Beitrag ID: #427623
Bewertung:
(44274 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Super Sache, genau DAS ist es, funktioniert einwandfrei!

Vielen lieben Dank Herr Fischer, Sie sind (mal wieder) meine Rettung!

LG
Birgit


als Antwort auf: [#427620]

IndexFromCharacterStyle CS 4

vanlent
Beiträge gesamt: 153

15. Feb 2011, 16:31
Beitrag # 14 von 65
Beitrag ID: #464822
Bewertung:
(42381 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo liebe Ind-Gemeinde,

habe dieses Skript schon einige Male in CS3 eingesetzt, und hatte die Hoffnung, dass es in CS4 so weitergeht. Leider gehts bei mir nicht.
(CS4 Mac 10.4.11)

Auf http://img713.imageshack.us/i/indexfehlmeld.png/ kan man die Fehlermeldung sehen. Hat jemand ähnliche Erfahrungen gemacht?

Grüße
Frank


als Antwort auf: [#427623]

IndexFromCharacterStyle CS 4

Martin Fischer
  
Beiträge gesamt: 12775

15. Feb 2011, 19:38
Beitrag # 15 von 65
Beitrag ID: #464835
Bewertung:
(42355 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Frank,

das Skript sollte genauso wie in CS3 funktionieren.
Ich vermute, dass mit dem Inhalt einer Fundstelle etwas nicht passt.
Vermutlich hat ein verankertes Objekt das entsprechende Zeichenformat zugewiesen bekommen.

Die folgende Variante sollte die fehlerauslösende Stelle heranzoomen.
Dann kannst Du prüfen, ob mit der Fundstelle etwas nicht in Ordnung ist.
Code
// IndexFromCharacterStyle_z_CS4.jsx   
//
// ggf. mit Zoom auf fehlerhafte Fundstelle
//
var myErr = mySucc = 0;
var myList = "";
var doc = app.activeDocument
var myCharacterStyle = myDisplayDialog(doc);
app.changeTextPreferences = NothingEnum.nothing;
app.findTextPreferences = NothingEnum.nothing;


app.findTextPreferences.appliedCharacterStyle = myCharacterStyle;
var _index = ( doc.indexes.length == 0 )
? doc.indexes.add()
: doc.indexes.firstItem();
f = doc.findText()
for( oneEntry = f.length-1; oneEntry > -1; oneEntry-- ) {
var _topic = null;
_topic = _index.topics.itemByName( f[oneEntry].contents );
if (_topic == null) {
try {
_topic = _index.topics.add( f[oneEntry].contents );
}
catch(e) {
selectIt(f[oneEntry]);
}
}
try {
_topic.pageReferences.add( f[oneEntry], PageReferenceType.currentPage ) ;
mySucc++;
}
catch(e) {
myList += f[oneEntry].contents + "\r" ;
myErr++;
}
}

alert( "Das Ergebnis:\r" + mySucc + " x erfolgreich\r" + myErr + " x versagt:\r-----------\r" + myList );


function myDisplayDialog(doc){
var myFieldWidth = 120;

var myCharStyles = doc.characterStyles.everyItem().name;

var myDialog = app.dialogs.add({name:"Index-Begriffe"});
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Zeichenformat:", minWidth:myFieldWidth});
}
with(dialogColumns.add()){
var mySourceDropdown = dropdowns.add({stringList:myCharStyles, selectedIndex:myCharStyles.length-1});
}
}
}
var myResult = myDialog.show();
if(myResult == true){
var theCharStyle =myCharStyles[mySourceDropdown.selectedIndex];
myDialog.destroy();
}
else{
myDialog.destroy()
exit();
}
return theCharStyle;
}

function selectIt( theObj )
{
var myZoom = 400;
app.select(theObj,SelectionOptions.replaceWith);
app.activeWindow.zoomPercentage = myZoom;

// Option zum Abbruch, falls innerhalb einer Schleife aufgerufen
var myChoice = confirm ('Fundstelle fehlerhaft!\rWeiter?' );
if (myChoice == false)
exit();
return app.selection[0];
}



als Antwort auf: [#464822]
(Dieser Beitrag wurde von Martin Fischer am 16. Feb 2011, 08:21 geändert)
X