[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Script umschreiben Feiertage markieren

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

Script umschreiben Feiertage markieren

jayeassy
Beiträge gesamt: 19

28. Sep 2011, 15:54
Beitrag # 1 von 4
Bewertung:
(1279 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

könnte mir jemand dieses Script umschreiben? Da ich einen Wandplaner habe und dieses dort nicht so anwendbar ist.
Das Script so zu veröffentlichen geht in Ordnung, da dieses es frei in diesem Foren zur Verfügung gestellt hat.
Meine Änderungen sind in Klammern dahinter geschrieben:

Code
 

Code
#target InDesign 
//DESCRIPTION: Farbzuweisung für Ferien
/*
+ Anwendungsbereich: Kalender
+ Funktion:
1. Script sucht nach Zeitspannen (z.B.Ferientage von 7.7. bis 15.9.) in einem Jahr
2. Script weist den Tabellenzeilen mit den entsprechenden Fundstellen
eine auswählbare Hintergrundfarbe zu
+ Voraussetzungen für die fehlerfreie Ausführung:
1. Kalender ist mittels Tabellen aufgebaut (Habe ich jeden Monat in einer Tabelle)
2. Der Eintrag für Monat und Jahr hat folgendes Format "Monat Jahr" z.B. "Januar 2011" (NUR Monat kein Jahr)
3. Auf einer Seite befindet sich jeweils nur ein Monat (Alle Monate auf einer Seite(Wandplaner))
4. Die Tabelle mit den farblich zu hinterlegenden Ferientagen befindet sich
auf der gleichen Seite wie der Eintrag für Monat und Jahr (Habe Ja nur eine Seite)
5. In dieser Tabelle (Punkt 4) findet sich der Ausdruck "Mo" (für Montag) (Ist vorhanden)



*/

var _dok = app.activeDocument;
var m;
var _antwort = true;

var _monatMap = idsMap();
_monatMap.pushItem(1,"Januar");
_monatMap.pushItem(2,"Februar");
_monatMap.pushItem(3,"März");
_monatMap.pushItem(4,"April");
_monatMap.pushItem(5,"Mai");
_monatMap.pushItem(6,"Juni");
_monatMap.pushItem(7,"Juli");
_monatMap.pushItem(8,"August");
_monatMap.pushItem(9,"September");
_monatMap.pushItem(10,"Oktober");
_monatMap.pushItem(11,"November");
_monatMap.pushItem(12,"Dezember");



if (app.scriptPreferences.version >= 6) {
while (_antwort) {
app.doScript(main, ScriptLanguage.JAVASCRIPT , [], UndoModes.ENTIRE_SCRIPT, "Farbzuweisungen Ferientage");
_antwort = confirm("Möchten Sie weitere Ferientage eingeben?");
}
} else {
while (_antwort) {
main();
_antwort = confirm("Möchten Sie weitere Ferientage eingeben?");
}
}



function main () {

var _ersterTag;
var _monatJahr;
var _letzterTag ;

var _eingabe = dialog();

var _jahr = _eingabe[0];
var _tagBeginn = _eingabe[1];
var _monatBeginn = _eingabe[2];
var _tagEnde = _eingabe[3];
var _monatEnde = _eingabe[4];
var _farbeFeiertage = _eingabe[5];

if (_monatBeginn == _monatEnde) { //Beginn und Ende der Ferien im gleichen Monat

_monatJahr = _monatMap.getItem(_monatBeginn) + " " + _jahr;
_ersterTag = _tagBeginn;
_letzterTag = _tagEnde;
mark(markInside,[_monatJahr,_farbeFeiertage,_ersterTag,_letzterTag]);

} else { // ansonsten bis zum Ende des Monats mit der Farbe hinterlegen

_monatJahr = _monatMap.getItem(_monatBeginn) + " " + _jahr;
_ersterTag = _tagBeginn;

mark(markEnd,[_monatJahr,_farbeFeiertage,_ersterTag,_letzterTag]); // Bis zum Ende des Monats mit der Farbe hinterlegen


for (m = _monatBeginn; m < 12; m++) {

if ( (m + 1) == _monatEnde) { // Vergeleich ob der Monat mit dem Ferienende schon erreicht ist

_monatJahr = _monatMap.getItem(m+1) + " " + _jahr;
_letzterTag = _tagEnde;
mark(markBegin,[_monatJahr,_farbeFeiertage,_ersterTag,_letzterTag]); // Vom 1. des Monats bis zum Ende der Ferientage mit der Farbe hinterlegen
break;

} else { // ansonsten den ganzen Monat mit der Farbe hinterlegen

_monatJahr = _monatMap.getItem(m+1) + " " + _jahr;
mark(markAll,[_monatJahr,_farbeFeiertage,_ersterTag,_letzterTag]);

}
}
}


}



function dialog () {

var _gui = app.dialogs.add({name:"Zeitraum und Farbe für die Ferientage festlegen"});

var _minWidthJahr = 40;
var _minWidthMonat = 45;
var _minWidthTag = 45;
var _minWidthFarbe = 60;
var _minWidthBox = 300;

with (_gui) {
with (dialogColumns.add()) {
with (borderPanels.add()) {
with (dialogColumns.add()) {
with (dialogRows.add()) {
staticTexts.add( {staticLabel: "Kalenderjahr:", minWidth: _minWidthMonat} );
var _jahr = textEditboxes.add( {editContents: "2012", minWidth: _minWidthJahr} );
}
}
}
with (borderPanels.add()) {
with (dialogColumns.add()) {
with (dialogRows.add()) {
staticTexts.add( {staticLabel: "Ferienbeginn:" } );
}
with (dialogRows.add()) {
staticTexts.add( {staticLabel: "Tag:"} );
var _tageAuswahl = ["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"];
var _tagBeginn = integerComboboxes.add({stringList: _tageAuswahl, editValue: 1, minWidth: _minWidthTag});
staticTexts.add( {staticLabel: "Monat:", minWidth: _minWidthMonat} );
var _monateAuswahl = ["1","2","3","4","5","6","7","8","9","10","11","12"];
var _monatBeginn = integerComboboxes.add({stringList: _monateAuswahl, editValue: 1, minWidth: _minWidthMonat});
}
}
}
with (borderPanels.add()) {
with (dialogColumns.add()) {
with (dialogRows.add()) {
staticTexts.add( {staticLabel: "Ferienende:"} );
}
with (dialogRows.add()) {
staticTexts.add( {staticLabel: "Tag:"} );
var _tagEnde = integerComboboxes.add({stringList: _tageAuswahl, editValue: 1, minWidth: _minWidthTag});
staticTexts.add( {staticLabel: "Monat:", minWidth: _minWidthMonat} );
var _monatEnde = integerComboboxes.add({stringList: _monateAuswahl, editValue: 1, minWidth: _minWidthMonat});
}
}
}
with (borderPanels.add()) {
with (dialogColumns.add()) {
with (dialogRows.add()) {
staticTexts.add( {staticLabel: "Farbe für die Feiertage:"} );
}
with (dialogRows.add()) {
staticTexts.add( {staticLabel: "Farbe:"} );
var _farbfelder = _dok.swatches.everyItem().name;
var _farbe = dropdowns.add({ stringList: _farbfelder, selectedIndex: 2, minWidth: _minWidthFarbe});
}
}
}
}
}

if (_gui.show() == false) {
_gui.destroy();

} else {
var _eingabe = [_jahr.editContents,_tagBeginn.editValue,_monatBeginn.editValue,_tagEnde.editValue,_monatEnde.editValue, _farbfelder[_farbe.selectedIndex]];
return _eingabe;
}

}


// Hintergrundfarbe für die Tabellen-Zeile zuweisen
function mark (markTable, _args) {

var _monatJahr = _args[0]; //"Februar 2011"
var _farbeFerientage = _args[1]; // Name der Farbe
var _ersteZeile = _args[2] - 1;
var _letzteZeile = _args[3] - 1;

var _suchErgebnis = find ([_monatJahr,""]);
var _gesuchteSeite = _suchErgebnis[0].parentTextFrames[0].parentPage;
_dok.select(_gesuchteSeite.textFrames.everyItem());

app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = "Mo\\>"; // Suche nach Mo, um die zum Monat zugehoerige Tabelle mit den Wochentagen zu identifiziern
// Alle Elemente der Auswahl werden durchlaufen, da Selection[0] nicht in jedem Fall der gewünschte Textrahmen
for (var s=0; s < _dok.selection.length; s++) {
var _suchErgebnisWT = _dok.selection[s].findGrep();
if (_suchErgebnisWT.length > 0) {
break; //For-Schleife bricht ab, sobald ein Ergebnis fuer "Mo" gefunden ist.
}
}
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;

var _gesuchteTabelle = _suchErgebnisWT[0].insertionPoints.firstItem().parent.parent;
app.activeDocument.select(_gesuchteTabelle);

markTable (_ersteZeile,_letzteZeile,_farbeFerientage,_gesuchteTabelle);

}

// markieren Innerhalb eines Monats
function markInside (_begin,_end,_color,_table) {

_table.rows.itemByRange(_begin,_end).fillColor = _dok.colors.itemByName(_color);

}

// Anfang der Ferien bis zum Ende des Monats
function markEnd (_begin,_end,_color,_table) {

_end = _table.rows.length - 1;
_table.rows.itemByRange(_begin,_end).fillColor = _dok.colors.itemByName(_color);

}

// Anfang des Monats bis Ferientag Ende
function markBegin (_begin,_end,_color,_table) {

_begin = 0;
_table.rows.itemByRange(_begin,_end).fillColor = _dok.colors.itemByName(_color);

}


// Gesamtes Monat
function markAll (_begin,_end,_color,_table) {

_begin = 0;
_end = _table.rows.length - 1;
_table.rows.itemByRange(_begin,_end).fillColor = _dok.colors.itemByName(_color);

}


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;
}

/*
+ Hashmap for JavaScript
+ based on http://www.mojavelinux.com/articles/javascript_hashes.html by Dan Allen.
*/
function idsMap () {
return {
length : 0,
items : [],

removeItem : function(_key) {
var _previous;
if (typeof(this.items[_key]) != 'undefined') {
this.length--;
var _previous = this.items[_key];
delete this.items[_key];
}
return _previous;
},


getItem : function(_key) {
return this.items[_key];
},

pushItem : function(_key, _value) {
var _previous;
if (typeof(_value) != 'undefined') {
if (typeof(this.items[_key]) == 'undefined') {
this.length++;
}
else {
_previous = this.items[_key];
}
this.items[_key] = _value;
}
return _previous;
},

hasItem : function(_key) {
return typeof(this.items[_key]) != 'undefined';
},

clear : function() {
for (var i in this.items) {
delete this.items[i];
}
this.length = 0;
}
}
}

X

Script umschreiben Feiertage markieren

Martin Fischer
  
Beiträge gesamt: 12891

28. Sep 2011, 16:23
Beitrag # 2 von 4
Beitrag ID: #481228
Bewertung:
(1263 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

wenn Du den Autor kennst (hast Du eine Quelle?), dann wäre es für alle Beteiligten einfacher, Du würdest Dich mit Deinen Änderungswünschen direkt diesen wenden. Der Autor kennt sein "Kind" und weiß auf Anhieb, wo einzugreifen ist.

So könnte er Dir entweder eine Spezialanpassung anbieten oder das Skript entsprechend Deinen Vorstellungen für die Allgemeinheit erweitern und unter seinem Namen veröffentlichen.

Es ist so eine Sache, in aller Öffentlichkeit an fremden Skripten, für deren Entwicklung sich einer viel Mühe gegeben hat, herumzudoktern.


als Antwort auf: [#481224]
(Dieser Beitrag wurde von Martin Fischer am 28. Sep 2011, 16:25 geändert)

Script umschreiben Feiertage markieren

Martin Fischer
  
Beiträge gesamt: 12891

28. Sep 2011, 16:32
Beitrag # 3 von 4
Beitrag ID: #481230
Bewertung:
(1249 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Offensichtlich handelt es sich um die Fortsetzung der Diskussion von Kalender Ferien kennzeichnen Script umschreiben und Kalender Zellen einfärben InDesign CS4.

Vielleicht hat der Autor, Roland Dreger, inzwischen mehr Zeit (und Interesse) die Änderungswünsche gegen eine entsprechende Aufwandsentschädigung zu berücksichtigen und das Skript Deinen individuellen Anforderungen anzupassen.


als Antwort auf: [#481224]
(Dieser Beitrag wurde von Martin Fischer am 28. Sep 2011, 16:33 geändert)

Script umschreiben Feiertage markieren

drerol74
Beiträge gesamt: 512

28. Sep 2011, 21:47
Beitrag # 4 von 4
Beitrag ID: #481268
Bewertung:
(1198 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jayeassy,

wenn du möchtest, dann schick mir doch das InDesign-Dokument für den Kalender zu. Dann kann ich dir genau sagen, wie lange es braucht, das Script für deinen Fall anzupassen.


Schöne Grüße
Roland Dreger


als Antwort auf: [#481224]
X