[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt contentSensitiveTable.jsx

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

contentSensitiveTable.jsx

drerol74
Beiträge gesamt: 507

18. Jun 2011, 11:12
Beitrag # 1 von 1
Bewertung:
(615 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo an alle Mitlesenden,

folgend ein Skript, das Tabellenzeilen in Abhängigkeit von ihrem Inhalt formatiert. Konkretes Beispiel: ein Kalender (über Datenzusammenführung erstellt), bei dem alle Tabellenzeilen mit Samstagen, Sonn- und Feiertagen eine auswählbare Hintergrundfarbe bekommen.

Vielleicht kann es ja mal irgendjemand brauchen.

Das Skript tut was es soll, kann aber sicher noch optimiert und ausgebaut werden. Deshalb ist Feedback herzlich willkommen.

Code
#target InDesign 
//DESCRIPTION: Farbzuweisung in Abhängigkeit vom Tabelleninhalt
/*
+ Anwendungsbereich: Kalender
+ Funktion:
1. Script sucht nach den Einträgen "Sa" und "So" sowie nach einem den Feiertagen zugewiesenen Zeichenformat
2. Script weist den Tabellenzeilen mit den entsprechenden Fundstellen eine auswählbare Hintergrundfarbe zu.
+ Vorraussetzungen für die fehlerfreie Ausführung:
1. Kalender ist mittels einer Tabelle aufgebaut
2. Allen Feiertagen ist ein gemeinsames Zeichenformat zugewiesen.
+ Indesign Version: 7.0.4
+ Autor: Roland Dreger
+ Datum: 18. Juni 2011
*/

var _dok = app.activeDocument;
var i, j, k;

// Mögliche Voreinstellungen für die GREP-Suche
// with (app.findChangeGrepOptions) {
// includeFootnotes = false;
// includeHiddenLayers = false;
// includeLockedLayersForFind = true;
// includeLockedStoriesForFind = true;
// includeMasterPages = false;
// }

try {
if (app.scriptPreferences.version >= 6) {
app.doScript(main, ScriptLanguage.JAVASCRIPT , [], UndoModes.ENTIRE_SCRIPT, "Alle Farbzuweisungen");
} else {
main();
}
} catch (_fehler) {
alert("Es ist leider ein Fehler aufgetreten! Fehlermeldung: " + _fehler.message);
}

function main() {

// Abfrage der Farben und des Zeichenformates
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.INTERACT_WITH_ALL;
var _gui = app.dialogs.add();
_gui.name = "Farben und Formate zuweisen";
var _guiCol = _gui.dialogColumns.add();

var _guiRow1 = _guiCol.dialogRows.add();
var _saText = _guiRow1.staticTexts.add();
_saText.staticLabel = "Farbe für Tabellenzeile mit Samstagen:";
var _saDropDown = _guiRow1.dropdowns.add();
_saDropDown.stringList = _dok.colors.everyItem().name;
_saDropDown.selectedIndex = 0;


var _guiRow2 = _guiCol.dialogRows.add();
var _soText = _guiRow2.staticTexts.add();
_soText.staticLabel = "Farbe für Tabellenzeile mit Sonntagen:";
var _soDropDown = _guiRow2.dropdowns.add();
_soDropDown.stringList = _dok.colors.everyItem().name;
_soDropDown.selectedIndex = 0;

var _guiRow3 = _guiCol.dialogRows.add();
var _feiertagText = _guiRow3.staticTexts.add();
_feiertagText.staticLabel = "Farbe für Tabellenzeile mit Feiertagen:";
var _feiertagDropDown = _guiRow3.dropdowns.add();
_feiertagDropDown.stringList = _dok.colors.everyItem().name;
_feiertagDropDown.selectedIndex = 0;

var _guiRow4 = _guiCol.dialogRows.add();
var _ZFText = _guiRow4.staticTexts.add();
_ZFText.staticLabel = "Zugewiesenes Zeichenformat für Feiertage:";
var _ZFDropDown = _guiRow4.dropdowns.add();
_ZFDropDown.stringList = _dok.characterStyles.everyItem().name;
_ZFDropDown.selectedIndex = 0;

var _ok = _gui.show();

if (_ok) {
var _farbeSamstag = _dok.colors[_saDropDown.selectedIndex];
var _farbeSonntag = _dok.colors[_soDropDown.selectedIndex];
var _farbeFeiertag = _dok.colors[_feiertagDropDown.selectedIndex];
var _ZFFeiertag = _dok.characterStyles[_ZFDropDown.selectedIndex];
}
_gui.destroy();

var _grepEx1 = "\\<Sa\\>" // GREP Ausdruck: Sonntag
var _suchErgebnisSa = find([_grepEx1,""]);
for (i = 0; i < _suchErgebnisSa.length; i++) {
var _zeileSa = _suchErgebnisSa[i].insertionPoints.firstItem().parent.rows[0];
_zeileSa.fillColor = _dok.colors.itemByName(_farbeSamstag.name);
}

var _grepEx2 = "\\<So\\>" // GREP Ausdruck: Samstag
var _suchErgebnisSo = find([_grepEx2,""]);
for (j = 0; j < _suchErgebnisSo.length; j++) {
var _zeileSo = _suchErgebnisSo[j].insertionPoints.firstItem().parent.rows[0];
_zeileSo.fillColor = _dok.colors.itemByName(_farbeSonntag.name);
}

var _grepEx3 = "" // GREP Ausdruck: [\\u\\l\\d\\p{Z*}]+$ Wenn mit Datenzusammenfuehrung gearbeitet wird und das Zeichenformat auch in den leeren Zellen enthalten ist.
var _suchErgebnisFeiertag = find ([_grepEx3, _ZFFeiertag.name])
for (k = 0; k < _suchErgebnisFeiertag.length; k++) {

// Zuweisung der Hintergrundfarbe für die Tabellenspalte
//var _spalteFeiertag = _suchErgebnisFeiertag[k].insertionPoints.firstItem().parent.columns[0];
//_spalteFeiertag.fillColor = _dok.colors.itemByName(_farbeFeiertag.name);

// Zuweisung der Hintergrundfarbe für die Tabellenzeile
var _zeileFeiertag = _suchErgebnisFeiertag[k].insertionPoints.firstItem().parent.rows[0];
_zeileFeiertag.fillColor = _dok.colors.itemByName(_farbeFeiertag.name);

// Zuweisung der Hintergrundfarbe für die Tabellenzelle
//var _zelleFeiertag = _suchErgebnisFeiertag[k].insertionPoints.firstItem().parent;
//_zelleFeiertag.fillColor = _dok.colors.itemByName(_farbeFeiertag.name);
}
}

function find (_args) {
var _grep = _args[0]
var _style = _args[1]
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = _grep
app.findGrepPreferences.appliedCharacterStyle = _style;
_ergebnis = app.activeDocument.findGrep();
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
return _ergebnis;
}

X