[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Zellenformat "nicht von nächter Zeile trennen"

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

Zellenformat "nicht von nächter Zeile trennen"

mettin1988
Beiträge gesamt: 10

17. Mär 2017, 14:50
Beitrag # 1 von 8
Bewertung:
(4614 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

Ist es per Script möglich Zellen, die quasi = Zeilen sind, in einem bestimmten Zellenformat quasi die Zeilenoption "nicht von nächster Zele trennen" zu geben?

Vielen Dank im Voraus für die Hilfe.
X

Zellenformat "nicht von nächter Zeile trennen"

Uwe Laubender
Beiträge gesamt: 5318

17. Mär 2017, 15:21
Beitrag # 2 von 8
Beitrag ID: #556394
Bewertung:
(4602 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Mettin,
sieht nicht so aus, als dass das über ein Zellenformat ginge.
Auch nicht per Skript.

Was Du aber machen kannst:

Mach' 'ne Schleife durch alle Zellen der Tabelle und sieh nach, welche Zellenformate zugewiesen sind. Bei Deinem Kandidaten kannst Du dann den Wert von keepWithNextRow auf true setzen.


als Antwort auf: [#556389]

Zellenformat "nicht von nächter Zeile trennen"

mettin1988
Beiträge gesamt: 10

17. Mär 2017, 16:11
Beitrag # 3 von 8
Beitrag ID: #556397
Bewertung:
(4576 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank für die rasche Antwort,

Ich werde mal mein Glück probieren.


als Antwort auf: [#556394]

Zellenformat "nicht von nächter Zeile trennen"

mettin1988
Beiträge gesamt: 10

21. Mär 2017, 17:36
Beitrag # 4 von 8
Beitrag ID: #556458
Bewertung:
(4339 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Uwe,

ich habe heute mal probiert (bin noch so ein halber neuling) deinen Vorschlag umzusetzten, allerdings scheiter ich schon daran das Zellformat auszulesen.

Ich habe zu Testzwecken erstmal dies hier geschireben um zu gucken ob ich das Zellformat ausgelesen bekomme
Code
var meinZellenformat = app.selection[0].tables[0].cells[0].appliedCellStyle.getElements(); 

alert(meinZellenformat)


nur leider zeigt er mir nicht wie erhofft das Zellformat an, sondern "[object CellSyle]".

Vielleicht hast du da einen Rat für mich was ich falsch mache?


als Antwort auf: [#556394]

Zellenformat "nicht von nächter Zeile trennen"

Peda
Beiträge gesamt: 97

21. Mär 2017, 18:00
Beitrag # 5 von 8
Beitrag ID: #556459
Bewertung:
(4335 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Mettin,

ersetz das

Code
.getElements(); 


einmal durch

Code
.name; 


Damit solltest Du den Namen des verwendeten Zellformates ausgegeben bekommen.

Viele Grüße


Peter


als Antwort auf: [#556458]

Zellenformat "nicht von nächter Zeile trennen"

Uwe Laubender
Beiträge gesamt: 5318

21. Mär 2017, 20:46
Beitrag # 6 von 8
Beitrag ID: #556460
Bewertung:
(4286 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo mettin,

teste mal folgende Varianten:
Code
// Variante 1: 
var meinZellenformat = app.selection[0].tables[0].cells[0].appliedCellStyle.getElements();

alert(meinZellenformat); // [object Cell Style]
alert(meinZellenformat.name); // undefined
alert(meinZellenformat.constructor.name); // Array


Code
// Variante 2: 
var meinZellenformat = app.selection[0].tables[0].cells[0].appliedCellStyle.getElements()[0];

alert(meinZellenformat); // [object Cell Style]
alert(meinZellenformat.name); // Name des Cell Styles
alert(meinZellenformat.constructor.name); // CellStyle


Code
// Variante 3: 
var meinZellenformat = app.selection[0].tables[0].cells[0].appliedCellStyle;

alert(meinZellenformat); // [object Cell Style]
alert(meinZellenformat.name); // Name des Cell Styles
alert(meinZellenformat.constructor.name); // CellStyle


Die Variante 1 täuscht Dich also. Falls Du also mit getElements() arbeiten möchtest, dann sollte Dir bewusst sein, dass da ein Array gleicher Elemente zurückkommt.

InDesign benutzt dann als Objektbegriff die gemeinsame Klasse, die da zusammengefasst wird. Hier also [object CellStyle]. Da lässt man sich leicht täuschen. In Wirklichkeit ist das ein Array. Und Du bist am ersten Element des Arrays interessiert. Das habe ich dann mit Variante 2 durchgespielt und ermittelt. Über getElements()[0] .

Oder Du verlässt Dich darauf, dass gleich zum eigentlichen Objekt durchgedrungen wird und wählst Variante 3.

Du kannst sogar die Zellenformate direkt vergleichen.
Einen Vergleich über den Namen der Zellenformate braucht es nicht:

Code
// Vorhandenes Zellenformat in Variable schreiben: 
var myCellStyle = app.documents[0].cellStyles.itemByName("MeinZellenformatName");

// Die erste aller vorhandenen Tabellen in eine Variable schreiben.
// getElements() gibt ein Array zurück
// getElements()[0] das erste Element des Arrays:
var myTable = app.documents[0].stories.everyItem().tables.everyItem().getElements()[0];

// Die erste Zelle der Tabelle mit dem Zellenformat formatieren:
myTable.cells[0].appliedCellStyle = myCellStyle;

// Einen Vergleich anstellen, ist jetzt eher trivial, aber das ist der Sinn der Übung:
myCellStyle == myTable.cells[0].appliedCellStyle // Return: true


Code
// Es besteht sogar Identität: 
myCellStyle === myTable.cells[0].appliedCellStyle // Return: true


Daraus folgt dann für alle Zellen der ersten Tabelle des Dokuments:

Code
// Das aktive Dokument: 
var doc = app.documents[0];

// Irgendwie müssen wir ja die Tabelle definieren.
// Hier die erste Tabelle in der ersten Story des Dokuments.
// InDesign wird per getElements() gezwungen das DOM-Objekt aufzusuchen
// und nicht nur zu referenzieren:
var myTable = doc.stories[0].tables[0].getElements()[0];

// Das Zellenformat:
var myCellStyle = doc.cellStyles.itemByName("MeinZellenformatName");

// ALLE Zellen der Tabelle:
var allCellsOfMyTable = myTable.cells.everyItem().getElements();
var allCellsOfMyTableLength = allCellsOfMyTable.length;

// Schleife durch die Tabellenzellen:
for(var n = 0;n < allCellsOfMyTableLength; n++ )
{
// Vergleich auf Identität:
if(allCellsOfMyTable[n].appliedCellStyle === myCellStyle)
{
// Wert für keepWithNextRow zuweisen.
// "Nicht von nächster Zeile trennen"
allCellsOfMyTable[n].keepWithNextRow = true;
};
};



Oder alle Tabellenzellen des gesamten Dokuments:

Code
// Das aktive Dokument: 
var doc = app.documents[0];

// Alle Zellen der aller Tabellen des Dokuments:
var allCellsOfDocument = doc.stories.everyItem().tables.everyItem().cells.everyItem().getElements();
var allCellsOfDocumentLength = allCellsOfDocument.length;

// Das Zellenformat:
var myCellStyle = doc.cellStyles.itemByName("MeinZellenformatName");

// Schleife durch die Tabellenzellen:
for(var n = 0;n < allCellsOfDocumentLength; n++ )
{
// Vergleich auf Identität:
if(allCellsOfDocument[n].appliedCellStyle === myCellStyle)
{
// Wert für keepWithNextRow zuweisen.
// "Nicht von nächster Zeile trennen"
allCellsOfDocument[n].keepWithNextRow = true;
};
};



Bliebe noch zu erwähnen, dass Tabellen verschachtelt in Zellen und Tabellen verschachtelt in Fußnoten so nicht angesprochen werden.


als Antwort auf: [#556458]

Zellenformat "nicht von nächter Zeile trennen"

mettin1988
Beiträge gesamt: 10

22. Mär 2017, 08:52
Beitrag # 7 von 8
Beitrag ID: #556461
Bewertung:
(4223 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank Peda und Uwe.

Ich werde mir dass alles mal genau zu gemüte führen, sobald ich die Zeit dafür habe und probiere alles nachzuvollziehen, was ihr mir geschrieben habt.


als Antwort auf: [#556460]

Zellenformat "nicht von nächter Zeile trennen"

Uwe Laubender
Beiträge gesamt: 5318

22. Mär 2017, 10:28
Beitrag # 8 von 8
Beitrag ID: #556463
Bewertung:
(4193 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Mettin,
ich hoffe, Dein Englisch ist gut.
Dann kann ich Dir nämlich diese beiden Blog-Posts von Marc Autret ans Herz legen:

On ‘everyItem()’ – Part 1
http://www.indiscripts.com/.../on-everyitem-part-1

On ‘everyItem()’ – Part 2
http://www.indiscripts.com/.../on-everyitem-part-2

Die sind auch gut zum Immerwiederlesen. Nach Monaten, nach Jahren, wenn man sich tiefer mit ExtendScript und JavaScript für InDesign beschäftigt hat.


als Antwort auf: [#556461]
X