[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt IndexFromCharacterStyle - Formatgruppe

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

IndexFromCharacterStyle - Formatgruppe

MarioF
Beiträge gesamt: 390

13. Feb 2015, 13:33
Beitrag # 1 von 8
Bewertung:
(5213 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
ich habe das Script [url=http://hilfdirselbst.org/index1.php?t=Index&read_article=17]IndexFromCharacterStyle angepasst, damit aus Absatzformaten ein Index erstellt wird. Soweit so gut. Nun werden aber keine Absatzformate angezeigt, die in einer Formatgruppe enthalten sind. Wie kann ich es dazu bringen, es doch zu machen?
Code
var myErr = mySucc = 0;     
var myList = "";
var doc = app.activeDocument
var myParagraphStyle = myDisplayDialog(doc);
app.changeTextPreferences = NothingEnum.nothing;
app.findTextPreferences = NothingEnum.nothing;


app.findTextPreferences.appliedParagraphStyle = myParagraphStyle;
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.paragraphStyles.everyItem().name;

var myDialog = app.dialogs.add({name:"Index-Begriffe"});
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Absatzformat:", 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];
}


Besten Dank für Anregungen.
X

IndexFromCharacterStyle - Formatgruppe

Martin Fischer
  
Beiträge gesamt: 12783

13. Feb 2015, 15:20
Beitrag # 2 von 8
Beitrag ID: #537059
Bewertung:
(5172 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Mario,

verwende allParagraphStyles statt paragraphStyles.

Bedenke, dass allParagraphStyles keine Collection wie paragraphStyles ist, sondern ein Array. Demnach funktionieren everyItem(), firstItem(), item(x) ... nicht.

Das betrifft in erster Linie die Zeile
Code
var myCharStyles = doc.paragraphStyles.everyItem().name; 


Das Array mit den Namen von allParagraphStyles musst Du also in einer Schleife aufbauen.


als Antwort auf: [#537057]

IndexFromCharacterStyle - Formatgruppe

MarioF
Beiträge gesamt: 390

13. Feb 2015, 17:04
Beitrag # 3 von 8
Beitrag ID: #537061
Bewertung:
(5120 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
danke für die Antwort. Ich stehe noch etwas auf Kriegsfuss mit Skripting, aber ich werde mich diesbezüglich mal einlesen ;-)
Gruß


als Antwort auf: [#537059]

IndexFromCharacterStyle - Formatgruppe

MarioF
Beiträge gesamt: 390

13. Feb 2015, 18:04
Beitrag # 4 von 8
Beitrag ID: #537062
Bewertung:
(5082 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Habe das von dir gefunden http://www.hilfdirselbst.ch/foren/Absatzformatabweichungen_ausgew%E4hlter_Formate_entfernen_P507242.html#507242
Muss mich doch etwas länger damit beschäftigen :-D


als Antwort auf: [#537061]

IndexFromCharacterStyle - Formatgruppe

MarioF
Beiträge gesamt: 390

1. Okt 2015, 22:53
Beitrag # 5 von 8
Beitrag ID: #543228
Bewertung:
(4538 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
ich muss dieses Thema noch einmal auf machen.
Ich hatte ein Script, welches aus einen gewählten Absatzformat einen Index erstellt. Das hat auch super geklappt. Nun will es nicht mehr das tun, wass ich gern hätte und ich habe keine Ahnung, wo der Fehler ist:
Code
var myErr = mySucc = 0;      
var myList = "";
var doc = app.activeDocument
var myParagraphStyle = myDisplayDialog(doc);
app.changeTextPreferences = NothingEnum.nothing;
app.findTextPreferences = NothingEnum.nothing;


app.findTextPreferences.appliedParagraphStyle=myParagraphStyle;
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.paragraphStyles.everyItem().name;

var myDialog = app.dialogs.add({name:"Index-Begriffe"});
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Absatzformat:", 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];
}



Es erscheint der Fehler 30477; hier mal die Fehlermeldung: https://dl.dropboxusercontent.com/...%20um%2022.46.48.png

Danke für eure Hilfe!


als Antwort auf: [#537062]

IndexFromCharacterStyle - Formatgruppe

Martin Fischer
  
Beiträge gesamt: 12783

2. Okt 2015, 08:47
Beitrag # 6 von 8
Beitrag ID: #543230
Bewertung:
(4477 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Mario,

was hat sich bei Dir geändert seit es nicht mehr funktioniert?
Die InDesign-Version?

Ersetze versuchsweise die Zeile 63
Code
return theCharStyle; 


durch
Code
if (doc.paragraphStyles.itemByName(theCharStyle).isValid) 
return doc.paragraphStyles.itemByName(theCharStyle);
else
{
alert('Hier stimmt was nicht (' + theCharStyle + ').') ;
exit();
}



als Antwort auf: [#543228]

IndexFromCharacterStyle - Formatgruppe

MarioF
Beiträge gesamt: 390

2. Okt 2015, 09:46
Beitrag # 7 von 8
Beitrag ID: #543231
Bewertung:
(4450 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
Antwort auf: was hat sich bei Dir geändert seit es nicht mehr funktioniert?
Die InDesign-Version?

Sorry, hätte ich zuschreiben müssen. Ein Versionssprung von CS6 -> CC 2015 ist erfolgt. Ich habe das Script aber mit der CS 6 getestet, da geht es auch nicht mehr. Was mich sehr wundert, da es bis dato gute Dienste geleistet hat.

Zu dein Änderungsvorschlag kann ich leider noch nix sagen, da ich es gerade nicht testen kann. Ich werde berichten.

Besten Dank schon mal

Mario


als Antwort auf: [#543230]

IndexFromCharacterStyle - Formatgruppe

MarioF
Beiträge gesamt: 390

2. Okt 2015, 22:14
Beitrag # 8 von 8
Beitrag ID: #543282
Bewertung:
(4364 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nochmals besten Dank. Klappt wieder super.


als Antwort auf: [#543230]
X