[GastForen Programme Print/Bildbearbeitung Adobe InDesign Script: CharacterStyle zuweisen -- Probleme mit ["None"]

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

Script: CharacterStyle zuweisen -- Probleme mit ["None"]

afteraid
Beiträge gesamt:

31. Jan 2007, 10:45
Beitrag # 1 von 11
Bewertung:
(5414 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo @ all,
mein erster Beitrag ;) und gleich ne Frage(der traut sich was...)

Da InDesign ja weder Tabellenverzeichnisse noch Bildverzeichnisse unterstützt habe ich mir was gebastelt:
Layer = Text Frame mit Inhalt(generiert durch TOC -Paragraph Style der Tabellenlabels und des Autoren-Baseline Shift angewendet)
Layer = Tabelle mit Formatierung

Was leider nicht geklappt hat war das hinzufügen von Nummern, da ich die Tabellen- / Bildnummer jeweils im Bild rechts oben in seperatem Textframe angebracht habe und InDesign falls 2 Elemete auf einer Seite sind mt der Nummerierung durcheinanderkommt.

Lange Rede ...
hab also noch die Aufgabe in Spalte die Nummern "händisch" einzugeben und bei 100++ war schnell der Eifer im Keller...

also hab ich mir mit der Forenhilfe folgendes gebastelt(Achtung 1. Skript)

Code
// insertNumberIntoSpalte.jsx   

if (app.selection[0].parent.constructor.name == "Cell")
var myTable = app.selection[0].parent.parent;
var myTotalRows = myTable.rows.length;
var myTotalCols = myTable.columns.length;
var colChoices = [];
var charStyles = app.documents[0].characterStyles.everyItem().name;
//alert(charStyles)
var myNum = 1;
var myCol = 0;
var myChar = "[None]";
for (k = 0; k < myTotalCols; k++)
{
var i = k+1;
colChoices.push(""+i);
}
// Dialog aufrufen
getData()

for (k = 0; k < myTotalRows; k++)
{

//PROBLEM START:::::::
myTable.columns[myCol].cells[k].texts[0].appliedCharacterStyle = (myChar!="[None]")? myChar : app.documents[0].characterStyles[0].name;
//::::::::::PROBLEM ENDE

if(myNum<10)
{
myTable.columns[myCol].cells[k].contents = "0"+ myNum;
}
else
{
myTable.columns[myCol].cells[k].contents = myNum + "";
}
myNum++;
}

function getData()
{

// Dialoge, welche eventuell im Speicher geblieben sind, löschen
try {
app.dialogs.everyItem().destroy();
}
catch (e) {
}

// einen Dialog vorbereiten

var aDialog = app.dialogs.add({name:"Nummerierung in Spalte einsetzen", canCancel:true});
with (aDialog)
{
with (dialogColumns.add())
{
with (borderPanels.add())
{
with (dialogColumns.add())
{
with (dialogRows.add())
{
staticTexts.add({staticLabel:unescape("Bitte Spalte ausw%E4hlen:")});
}
with (dialogRows.add())
{
var colChoose = dropdowns.add({stringList:colChoices,selectedIndex:0,minWidth:50});
}
with (dialogRows.add())
{
staticTexts.add({staticLabel:unescape("Bitte Startnummer ausw%E4hlen:")});
}
with (dialogRows.add())
{
var startNumber = realEditboxes.add({editValue:1});
}
with (dialogRows.add())
{
staticTexts.add({staticLabel:unescape("Bitte Zeichenformat ausw%E4hlen:")});
}
with (dialogRows.add())
{
var charChoose = dropdowns.add({stringList:charStyles,selectedIndex:0,minWidth:180});
}
}
}
}
}
// den Dialog anzeigen und auswerten
if (aDialog.show() == true)
{
myNum = startNumber.editValue;
myCol = Number(colChoices[colChoose.selectedIndex]-1);
myChar = charStyles[charChoose.selectedIndex];

alert("Startnummer: " + myNum + " -- Spalte: " + (colChoices[colChoose.selectedIndex]) + " -- Stil: " + myChar);
}
else
{
alert("Es traten Probleme auf ")
aDialog.destroy();
exit();
}

}


Cursor in Zelle vor Aufruf!!!

Funktioniert auch bis auf: Auswahl von "[None]"...habe englische InDesign CS2 Mac Version...

Jegliche Hilfe ist willkommen.
Danke vorab
Grüße Michael(before-aid)

(Dieser Beitrag wurde von afteraid am 31. Jan 2007, 11:02 geändert)
X

Script: CharacterStyle zuweisen -- Probleme mit ["None"]

Martin Fischer
  
Beiträge gesamt: 12783

31. Jan 2007, 11:11
Beitrag # 2 von 11
Beitrag ID: #273504
Bewertung:
(5410 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael,

willkommen!

An dem "[None]" habe ich mich auch schon grün und blau geärgert.
In Deinem Skript kannst Du das aber relativ einfach lösen.
Laß' einfach den ".name" hinter characterStyles[0]" weg:

Code
myTable.columns[myCol].cells[k].texts[0].appliedCharacterStyle = (myChar!="[None]")? myChar : app.documents[0].characterStyles[0]; 


Bei der Zuweisung des Zeichenformats werden normalerweise sowohl ein string als auch ein Zeichenformat als Objekt akzeptiert. "[None]" / "[Keine]" wird nicht als string akzeptiert.

P.S.: Anwender der deutschsprachigen InDesign-Version müssen jeweils "[None]" durch "[Keine]" ersetzen. - "Keine" ist in diesem Zusammenhang auch etwas seltsam gewählt, denn man kann ja einem Text maximal ein Zeichenformat (also unkombiniert) zuweisen. Da würde also der Singular "Kein" die Sache besser treffen.


als Antwort auf: [#273495]
(Dieser Beitrag wurde von Martin Fischer am 31. Jan 2007, 11:21 geändert)

Script: CharacterStyle zuweisen -- Probleme mit ["None"]

afteraid
Beiträge gesamt:

31. Jan 2007, 11:23
Beitrag # 3 von 11
Beitrag ID: #273508
Bewertung:
(5401 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke Martin.

So läuft das Script zumindest ohne Fehlermeldung.

Jetzt hab ich nur folgendes Problem:

Wenn ich in erster Spalte Nummern einfüge(CharacterStyle grün)
und dann das Skript das 2. Mal durchlaufen lasse um CharacterStyle auf ["None"] zurück zu setzen wird ["None"] nicht angewendet...
Kannst Du mir sagen wieso?
Gibt es eine Methode um CharacterStyle auf default/None zu setzen bevor ich Inhalte in eine Zelle einfüge?

texts[0].appliedCharacterStyle = undefined / null ???
Danke
Michael


als Antwort auf: [#273504]

Script: CharacterStyle zuweisen -- Probleme mit ["None"]

Martin Fischer
  
Beiträge gesamt: 12783

31. Jan 2007, 11:39
Beitrag # 4 von 11
Beitrag ID: #273514
Bewertung:
(5392 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Michael,

das Zurücksetzen der Formatierung auf "Keine" geht auf zweierlei Wegen:

(1)
Benutze den Skriptbefehl clearOverrides() beim betroffenen Absatz bzw. Text-Objekt (im UI: "Abweichungen löschen" bei den Absatzformaten) oder

(2)
a. Erzeuge ein neues Dummy-Zeichenformat (ohne Eigenschaften);
b. weise dieses Zeichenformat dem Text zu, dessen zugewiesenes Zeichenformat inklusive der Formatierung abgezogen werden soll;
c. lösche das Dummy-Zeichenformat und sage "Formatierung nicht beibehalten".


als Antwort auf: [#273508]
(Dieser Beitrag wurde von Martin Fischer am 31. Jan 2007, 11:44 geändert)

Script: CharacterStyle zuweisen -- Probleme mit ["None"]

afteraid
Beiträge gesamt:

31. Jan 2007, 12:04
Beitrag # 5 von 11
Beitrag ID: #273528
Bewertung:
(5380 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich hinke noch ;) würde aber gerne laufen...
Code
		if(myChar!="[None]") 
{

myTable.columns[myCol].cells[k].texts[0].appliedCharacterStyle = myChar;
}
else
{
myTable.columns[myCol].cells[k].texts[0].clearOverrides();
}
//myTable.columns[myCol].cells[k].texts[0].appliedCharacterStyle = (myChar!="[None]")? myChar : app.documents[0].characterStyles[0];//"none"//unescape("%5BNone%5D")

ist noch nicht die Lösung...
Wo ist mein Fehler?

grün ->none geht nicht...

aber leer -> none geht


als Antwort auf: [#273514]

Script: CharacterStyle zuweisen -- Probleme mit ["None"]

Martin Fischer
  
Beiträge gesamt: 12783

31. Jan 2007, 12:10
Beitrag # 6 von 11
Beitrag ID: #273529
Bewertung:
(5376 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielleicht solltest Du vor "clearOverrides()" tatsächlich das möglicherweise zugewiesene Zeichenformat zunächst durch "[None]" ersetzen ... ;-)

Denn sonst gibt es ja keine "Abweichungen" zu bereinigen.


als Antwort auf: [#273528]

Script: CharacterStyle zuweisen -- Probleme mit ["None"]

Hans Haesler
Beiträge gesamt: 5826

31. Jan 2007, 12:39
Beitrag # 7 von 11
Beitrag ID: #273543
Bewertung:
(5366 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael, hallo Martin,

ich habe hier ein Script, welches für jeden Tag der Woche ein Dokument
erzeugt. Zuerst wird ein Template geöffnet, die Textrahmen werden kompletiert,
Absatz- und Zeichenformate werden zugewiesen, das erste Dokument wird
gesichert, bleibt aber offen.

Jetzt werden zuerst im Textrahmen "Datum" die Formate auf "Keine" gesetzt.
Sonst klappt es mit der Formatierung des neuen Datums nicht. Dazu benutze ich ...

Code
curPara.appliedCharacterStyle = "[No character style]"; 
curPara.appliedParagraphStyle = "[No paragraph style]";

... nota bene mit einem französischen InDesign CS2 unter Windows.

Gruss, Hans


als Antwort auf: [#273529]

Script: CharacterStyle zuweisen -- Probleme mit ["None"]

afteraid
Beiträge gesamt:

31. Jan 2007, 13:18
Beitrag # 8 von 11
Beitrag ID: #273559
Bewertung:
(5356 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin / Hans,

da stand wohl jemand etwas länger auf dem Schlauch...
Code
for (k = 0; k < myTotalRows; k++) 
{
myTable.columns[myCol].cells[k].texts[0].appliedCharacterStyle = (myChar!="[None]")? myChar : app.documents[0].characterStyles[0];//"[No character style]" geht -- none oder unescape("%5BNone%5D")nicht
myTable.columns[myCol].cells[k].texts[0].clearOverrides();
if(myNum<10)
{
myTable.columns[myCol].cells[k].contents = "0"+ myNum;
}
else
{
myTable.columns[myCol].cells[k].contents = myNum + "";
}
myNum++;
}

.

Vielen herzlichen Dank für eure tolle Unterstützung.
Werde mich wohl wieder mehr mit JS beschäftigen...
Grüße
Michael


als Antwort auf: [#273543]

Script: CharacterStyle zuweisen -- Probleme mit ["None"]

Martin Fischer
  
Beiträge gesamt: 12783

31. Jan 2007, 13:21
Beitrag # 9 von 11
Beitrag ID: #273562
Bewertung:
(5354 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

die Zuweisung des Zeichenformats über den string "[No character style]" funktioniert international (also auch in den deutsch- und englischsprachigen Versionen von InDesign).

Danke für den Hinweis.
Allerdings wird damit die Formatierung auch nicht zurückgesetzt.

Die Formatierung wird bei "[No character style]" auch nicht zurückgesetzt, wenn ich das Zeichenformat nicht als Eigenschaft zuweise, sondern befehle:
Code
var myStyle = app.activeDocument.characterStyles.item(0); 
app.selection[0].applyStyle(myStyle, true)


Der zweite Parameter, true, sollte dafür sorgen, daß die Abweichungen gelöscht werden.
Das funktioniert bei jedem Zeichenformat, nur nicht bei "[No character style]".
Dieses Zeichenformat selbst erkennt keine Abweichung.

Es ist nicht einmal als [b]app.activeDocument.characterStyles.item("[No character style]") zu fassen. Auch nicht als [b]app.activeDocument.characterStyles.item("[None]").
Hier wird's wieder national:
Code
var myStyle = app.activeDocument.characterStyles.item("[Keine]"); 


Das Nichts ist in jeder Hinsicht etwas Besonderes. ;-)


als Antwort auf: [#273543]
(Dieser Beitrag wurde von Martin Fischer am 31. Jan 2007, 13:31 geändert)

Script: CharacterStyle zuweisen -- Probleme mit ["None"]

Hans Haesler
Beiträge gesamt: 5826

31. Jan 2007, 14:13
Beitrag # 10 von 11
Beitrag ID: #273591
Bewertung:
(5345 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

es kommt auf die Umstände an. Für meine Zwecke reicht es vollkommen,
weil mit den beiden nächsten Zeilen ...

Code
curPara.appliedParagraphStyle = "90_date.RT"; 
curPara.words.item(0).appliedCharacterStyle = "90.1_jour_gauche.RT";

... die Formate zugewiesen werden, welche schon vorher appliziert waren.

In der Schleife wird bei jedem Umgang die Textkette des Datums zusammen-
gefügt und eingesetzt. Aber ohne das Zurücksetzen auf "[Aucun"] wäre das
Ergebnis nicht in Ordnung.

Gruss, Hans


als Antwort auf: [#273562]

Script: CharacterStyle zuweisen -- Probleme mit ["None"]

Martin Fischer
  
Beiträge gesamt: 12783

31. Jan 2007, 14:23
Beitrag # 11 von 11
Beitrag ID: #273596
Bewertung:
(5342 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hans,

Du hast recht.
Siehe auch die Diskussion in http://www.hilfdirselbst.ch/...i?post=273582#273582


als Antwort auf: [#273591]
X