hilfdirselbst.ch
Facebook Twitter gamper-media
« « 1 2 3 » »  
JonesRidder
Beiträge: 85
5. Jul 2011, 11:37
Beitrag #1 von 41
Bewertung:
(10217 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Monatsseite automatisch generieren - InDesign CS5, Windows, JS


Hallo,

weiß jemand, wie ich folgende Ausgabe per Script automatisch auf meine Heftseite in InDesign (senkrecht untereinander, zeilenweise je Tag also)?
Code
August 2011 
1 Mo
2 Di
3 Mi
4 Do
5 Fr
6 Sa
7 So
usw. ...

Habe mir schon u.a. zwei Scripte angesehen (Calender Wizard und Calender Maker) aber es so nicht hinbekommen mit diesen.
Desweiteren soll es eine Lösung in Verbindung mit Excel geben, die ich ungern verwenden würde.

Danke für die Hilfe im Voraus!
Gruß
J.R. Top
 
X
Martin Fischer  M  p
Beiträge: 11839
5. Jul 2011, 12:00
Beitrag #2 von 41
Beitrag ID: #475235
Bewertung:
(10199 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Monatsseite automatisch generieren - InDesign CS5, Windows, JS


Antwort auf: Desweiteren soll es eine Lösung in Verbindung mit Excel geben, die ich ungern verwenden würde.


Aus welchem Grund?


Antwort auf: weiß jemand, wie ich folgende Ausgabe per Script automatisch auf meine Heftseite in InDesign (senkrecht untereinander, zeilenweise je Tag also)?


Hat Du schon einen Ansatz?

Viele Grüße
Martin
als Antwort auf: [#475230]
(Dieser Beitrag wurde von Martin Fischer am 5. Jul 2011, 12:01 geändert)
Top
 
JonesRidder
Beiträge: 85
5. Jul 2011, 12:05
Beitrag #3 von 41
Beitrag ID: #475237
Bewertung:
(10193 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Monatsseite automatisch generieren - InDesign CS5, Windows, JS


Grund:
Nicht jeder Anwender hat Excel auf seinem Rechner;
Damit der Anwender, der Layouts erstellt, nicht X Dateien um sich herum hat, um ein Heft zu erstellen (ID Vorlage, XML, JScript Datei ...).
Führt denn kein Weg an Excel vorbei?
Gruß
J.R.

Edit:
Mein Ansatz wäre folgender (wenn es nicht etwas einfachere, fertiges gibt):
- Aktuelles Systemdatum mit aktuellem Tag herausfinden
- Anhand von den Infos mich zum ersten Tag im Monat zurückarbeiten und zum letzten Tag im Monat vorarbeiten.
Später dann das ganze so anpassen evtl. dass User den Monat auswählen/angeben kann.
als Antwort auf: [#475235]
(Dieser Beitrag wurde von JonesRidder am 5. Jul 2011, 12:09 geändert)
Top
 
Martin Fischer  M  p
Beiträge: 11839
5. Jul 2011, 12:11
Beitrag #4 von 41
Beitrag ID: #475238
Bewertung:
(10182 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Monatsseite automatisch generieren - InDesign CS5, Windows, JS


Antwort auf: Führt denn kein Weg an Excel vorbei?


Selbstverständlich kann man sich so was auch programmieren lassen.
Aber auch dann hat man mindestens eine weitere Datei – das Skript – zu verwalten. ;-)

Du könntest es auch über eine nummerierte Liste direkt in InDesign ohne zusätzliche Dateien erledigen.

Viele Grüße
Martin
als Antwort auf: [#475237]
(Dieser Beitrag wurde von Martin Fischer am 5. Jul 2011, 12:13 geändert)
Top
 
JonesRidder
Beiträge: 85
5. Jul 2011, 12:19
Beitrag #5 von 41
Beitrag ID: #475240
Bewertung:
(10172 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Monatsseite automatisch generieren - InDesign CS5, Windows, JS


Ich habe ja bereits ein Script, diese Kalendergeschichte würde ich da mit reinschreiben an der entsprechenden Stelle.
Ich sehe mir das mit der nummerierten Liste mal an, wenn das nichts hilft, dann versuche ich es zu programmieren.

Danke
Gruß
J.R.
als Antwort auf: [#475238] Top
 
WernerPerplies
Beiträge: 2200
5. Jul 2011, 12:36
Beitrag #6 von 41
Beitrag ID: #475241
Bewertung: |
(10147 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Monatsseite automatisch generieren - InDesign CS5, Windows, JS


Hallo J.R.,

du hast recht, Excel ist m. E. für diese Aufgabe nicht sehr sinnvoll.

Mit JavaScript kannst Du jeden Kalender in jeder Sprache und fast jeder Zeit erzeugen.

Schau die einfach mal die Datumsklasse an.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#475240] Top
 
JonesRidder
Beiträge: 85
6. Jul 2011, 08:50
Beitrag #7 von 41
Beitrag ID: #475282
Bewertung:
(10068 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Monatsseite automatisch generieren - InDesign CS5, Windows, JS


So die Herren,

den Ablauf an sich hab ich geschrieben, zum testen werden die jeweiligen Daten in alert Boxen ausgegeben, dabei geht es immer vom ersten bis 31 des Monats (auch wenn der Monat weniger Tage hat).
Code
var jetzt = new Date(); 
var XterTagInWoche = jetzt.getDay(); //aktuell Xter Tag in der Woche 0-6
var Wochentage = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
//var XterTagInMonat = jetzt.getDate(); //aktuell Xter Tag im Monat 0-31
var Jahr = jetzt.getFullYear(); //2011
var XterMonatImJahr = jetzt.getMonth(); //aktueller Monat 0 bis 11
var Monate = new Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");

// Ausgabe: [Akteuller Monat][LEER][Aktulles Jahr]
var AusgabeMonatJahr = (Monate[XterMonatImJahr] + " " + Jahr);

//Alle Datums mit und vor aktuellem Datum schreiben
for(var XterTagInMonat = jetzt.getDate(); XterTagInMonat > 0; XterTagInMonat--) {
if (XterTagInWoche < 0) {
XterTagInWoche = 6;
}
// Ausgabe: [Tageszahl im aktuellen Datum][LEER][Ersten zwei Buchstaben des Wochentags]
alert("AB " + XterTagInMonat + " " + Wochentage[XterTagInWoche].substring(0,2));
XterTagInWoche--;
}

//Alle Datums nach aktuellem Datum schreiben
for(var XterTagInMonat = jetzt.getDate()+1; XterTagInMonat < 32; XterTagInMonat++) {
if (XterTagInWoche > 6) {
XterTagInWoche = 0;
}
// Ausgabe: [Tageszahl im aktuellen Datum][LEER][Ersten zwei Buchstaben des Wochentags]
alert("AB " + XterTagInMonat + " " + Wochentage[XterTagInWoche].substring(0,2));
XterTagInWoche++;
}



Meine Frage nun:
1. Wie gebe ich die Daten im Textrahmen "ebTage" zeilenweise untereinadner aus (die InDesign Seite ist bereits vorhanden)?
2. Ist es vorher nötig, die Daten in ein Array zu schreiben (Index 0 = 1. Tag im Monat bis Index 30 = 31 Tag im Monat)? Wobei das Array nicht von vorne nach hinten gefüllt werden würde (zumindest in der ersten Schleife nicht, da die ja rückwärts geht).
3. Was haltet Ihr von diesem Ansatz (sehr vereinfachte herangehensweise, wo z.B. keine Feiertage oder so berücksichtigt werden),
würdet Ihr es anders machen, wenn ja, wie?

Danke für eure Hilfe!

Gruß
J.R.
als Antwort auf: [#475241]
(Dieser Beitrag wurde von JonesRidder am 6. Jul 2011, 08:52 geändert)
Top
 
WernerPerplies
Beiträge: 2200
6. Jul 2011, 09:20
Beitrag #8 von 41
Beitrag ID: #475283
Bewertung:
(10052 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Monatsseite automatisch generieren - InDesign CS5, Windows, JS


So der Herr, ;-)

ich würde mir ein Template anlegen, in das ich dann die entsprechenden Daten per Suchen und Ersetzen einsetzen würde.

Alternativ:

Wenn das Ergebnis eine Tabelle sein soll, könnte man auch die Vorlage als externen Text aufbauen, dann wieder per Suchen und Ersetzen die Einsetzungen machen und anschließend den Text in eine Tabelle umwandeln.

Die Template-Lösung in InDesign hat den Vorteil, dass man sehr leicht zu jeder Zeit, ohne Änderung am Skript, das Design des Kalenders ändern kann.

Ich weiß, das klingt alles recht kryptisch, funktioniert aber.

Ich habe so etwas mit meinem Programm SearARep realisiert, wobei die eigentliche Ersetzung recht einfach funktioniert, die Erstellung der Kalenderdaten nicht.

Schau Dir mal hier die Vorlage für einen Monat an, realisiert in Corel Ventura, aber es funktioniert genauso in InDesign.
Beitrag:
http://weepee.de/...-terminkalender.html
-> 6.
Solch eine Lösung sollte problemlos auch in JavaScript zu realisieren sein.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#475282] Top
 
Kai Rübsamen  M  p
Beiträge: 4520
6. Jul 2011, 11:19
Beitrag #9 von 41
Beitrag ID: #475288
Bewertung:
(10016 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Monatsseite automatisch generieren - InDesign CS5, Windows, JS


Was willst du denn in den Rahmen schreiben? Das Ergebnis des 1. und 2. alert-Fensters oder nur das zweite?

Im zweiten alert stecken in dem Fall AB 7 Do - AB 31 So.

Unter der Voraussetzung, dass dein Textrahmen als "ebTage" benannt ist, würde nachfolgender Code schon mal das zweite alert-Fenster im Rahmen auszugeben:

Code
var erg = new Array(); 

//Alle Datums nach aktuellem Datum schreiben
for(var XterTagInMonat = jetzt.getDate()+1; XterTagInMonat < 32; XterTagInMonat++) {
if (XterTagInWoche > 6) {
XterTagInWoche = 0;
}
// Ausgabe: [Tageszahl im aktuellen Datum][LEER][Ersten zwei Buchstaben des Wochentags]
var d = "AB " + XterTagInMonat + " " + Wochentage[XterTagInWoche].substring(0, 2);
erg.push(d);
XterTagInWoche++;
}

var theString = erg.join("\r");
app.activeDocument.textFrames.itemByName("ebTage").contents = theString;

Gruß Kai Rübsamen
_______________________
als Antwort auf: [#475283] Top
 
JonesRidder
Beiträge: 85
6. Jul 2011, 12:40
Beitrag #10 von 41
Beitrag ID: #475294
Bewertung:
(9993 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Monatsseite automatisch generieren - InDesign CS5, Windows, JS


Hallo,

habe das Problem jetzt insoweit hinbekommen, dass die Daten an sich richtig ausgegeben werden nach folgendem Muster, in einzelnen Textrahmen je Zeile (ebTag1 bis ebTag31):
Code
1 Fr 
2 Sa
3 So
...
31 So


1. Wie formatiere ich das ganze nach folgendem Muster im nachfolgenden Code:
Code
 1 Fr 
...
10 So
...

(also: Zahlen rechtsbündig (flattern also links aber rechts nicht),
gefolgt von einem TAB,
sodass Mo, Di, Mi, Do, Fr, Sa, So immer linksbündig sind

2. Wie/Wo müsste ich den Code am besten ändern, wenn man davon ausgeht, dass nicht der aktuelle, sondern für den nächsten Monat das Layout entworfen wird? Kann ich anstatt der Definition von "var jetzt ..." (erste Variable im Code) so etwas wie "jetzt im nächsten Monat" definieren?

CODE
Code
var jetzt = new Date(); 
var XterTagInWoche = jetzt.getDay(); //aktuell Xter Tag in der Woche 0-6
var Wochentage = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
var Jahr = jetzt.getFullYear(); //2011
var XterMonatImJahr = jetzt.getMonth(); //aktueller Monat 0 bis 11
var Monate = new Array("Januar", "Februar", "M&auml;rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
var AusgabeMonatJahr = (Monate[XterMonatImJahr] + "\n" + Jahr);
_ebMonatJahr = getMasterPageItem("ebMonatJahr", _page);
_ebMonatJahr.contents = AusgabeMonatJahr;

//Alle Datums mit und vor aktuellem Datum schreiben FUNKTIONIERT
for(var XterTagInMonat = jetzt.getDate(); XterTagInMonat > 0; XterTagInMonat--) {
if (XterTagInWoche < 0) {
XterTagInWoche = 6;
}
// Ausgabe: [Tageszahl im aktuellen Datum][LEER][Ersten zwei Buchstaben des Wochentags]
//alert("AB " + XterTagInMonat + " " + Wochentage[XterTagInWoche].substring(0,2));
//Zeile auf Seite ausgeben
var AusgabeTag = XterTagInMonat + "\t" + Wochentage[XterTagInWoche].substring(0,2);
_ebTag = getMasterPageItem("ebTag" + XterTagInMonat, _page);
_ebTag.contents = AusgabeTag;
XterTagInWoche--;
}

//Alle Datums nach aktuellem Datum schreiben FUNKTIONIERT
for(var XterTagInMonat = jetzt.getDate()+1; XterTagInMonat < 32; XterTagInMonat++) {
if (XterTagInWoche > 6) {
XterTagInWoche = 0;
}
// Ausgabe: [Tageszahl im aktuellen Datum][LEER][Ersten zwei Buchstaben des Wochentags]
//alert("AB " + XterTagInMonat + " " + Wochentage[XterTagInWoche].substring(0,2));
//Zeile auf Seite ausgeben
var AusgabeTag = XterTagInMonat + "\t" + Wochentage[XterTagInWoche].substring(0,2);
_ebTag = getMasterPageItem("ebTag" + XterTagInMonat, _page);
_ebTag.contents = AusgabeTag;
XterTagInWoche++;
}


Weitere Hinweise:
- Ich brauche kein Array zwingend
- Ich brauche keine Feiertage etc. (nur möchte ich Sonntage und Feiertage farblich hervorheben und die Schrift vergrößern - das ganze durch Zuweisung eines Absatzformats)

Gruß
J.R.
als Antwort auf: [#475288]
(Dieser Beitrag wurde von JonesRidder am 6. Jul 2011, 12:46 geändert)
Top
 
JonesRidder
Beiträge: 85
6. Jul 2011, 13:06
Beitrag #11 von 41
Beitrag ID: #475298
Bewertung:
(9973 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Monatsseite automatisch generieren - InDesign CS5, Windows, JS


Vergisst die Sache mit
"2. Wo/Wie ..."
Statt dessen:
Ich habe in einer variable den Namen des Monats stehen, für den ich die Kalenderseite machen möchte.
Wie kann ich anhand dieser Info, den Namen des Tages des ersten im jeweiligen Monat herausfinden,
um dann anschließend nach dem Schema meiner 2. Schleife im Code (Posting vorher) vorarbeiten bis zum 31.?

Gruß
J.R.
als Antwort auf: [#475294] Top
 
WernerPerplies
Beiträge: 2200
6. Jul 2011, 14:09
Beitrag #12 von 41
Beitrag ID: #475303
Bewertung:
(9950 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Monatsseite automatisch generieren - InDesign CS5, Windows, JS


So ganz verstehe ich Deine Frage nicht, aber vielleicht helfen Dir diese Datumsfunktionen weiter:
Code
// Datum erster Mai 
var day = new Date(2011,4,1);
alert(day);
// umwandeln in Zeit
var tMayFirst = day.getTime();
// einen Tag abziehen
var tAprilLast = tMayFirst - (1 * 24 * 60 * 60 * 1000);
// Datum aus Zeit ermitteln
day.setTime(tAprilLast );
// letzter Tag des Monats
alert(day);


Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#475298] Top
 
JonesRidder
Beiträge: 85
7. Jul 2011, 07:39
Beitrag #13 von 41
Beitrag ID: #475352
Bewertung:
(9906 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Monatsseite automatisch generieren - InDesign CS5, Windows, JS


Ein Heft wird - irgendwann vor eintreten des Publikationsmonat - für einen bestimmten Monat erstellt.
Das Heft hat eine Seite mit einer Kalenderübersicht, für den Publikationsmonat.
Um den Kalender zu generieren, muss ich den ersten des Publikationsmonat herausfinden mit dem entsprechenden Tag um von diesem bis zum 31. anhand einer Schleife durchzulaufen.

@Werner Perplies:
Dein Posting scheint mein Problem lösen zu können.
Danke!

Gruß
J.R.
als Antwort auf: [#475303] Top
 
WernerPerplies
Beiträge: 2200
7. Jul 2011, 07:46
Beitrag #14 von 41
Beitrag ID: #475355
Bewertung:
(9901 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Monatsseite automatisch generieren - InDesign CS5, Windows, JS


Hallo J.R.,

Zitat Dein Posting scheint mein Problem lösen zu können.

Ja, ich denke das auch. So lange Du keine Kalenderwoche brauchst, sollte das reichen.

Zitat Danke!

da nich für! ;-)
gerne.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#475352] Top
 
JonesRidder
Beiträge: 85
7. Jul 2011, 10:07
Beitrag #15 von 41
Beitrag ID: #475371
Bewertung:
(9874 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Monatsseite automatisch generieren - InDesign CS5, Windows, JS


Hi,

wisst Ihr, wie man den Inhalt eines XML Attributs in eine Variable schreibt (krieg ich irgendwie nicht hin):

XML
Code
<dataroot> 
<Artikel>
...
<Rubrik Typ="TypXY" Vom="01.07.2011">RubrikXY</Rubrik>
</Artikel>
</dataroot>

Ich möchte jetzt vom Element <Rubrik> das Attribut "Vom" in zwei Variable schreiben:
Code
var _dok = app.activeDocument; 
var _root = _dok.xmlElements[0];
var Jahr = _root.xmlElements[0].xmlAttributes.itemByName("Rubrik[@Vom]").value.substring(6,4);
var Monat = _root.xmlElements[0].xmlAttributes.itemByName("Rubrik[@EVom]").value.substring(3,2);
alert(Monat + " " + Jahr)

Fehlermeldung:
Code
_artikel.xmlAttributes.itemByName("Rubrik[@Vom]") ist keine Funktion. 


Gruß
J.R.
als Antwort auf: [#475355]
(Dieser Beitrag wurde von JonesRidder am 7. Jul 2011, 10:19 geändert)
Top
 
« « 1 2 3 » »  
X