Geburtstags-Erinnerung

Zielsetzung

Geburtstage der kommenden Tage werden auf einer Internetseite eingeblendet. Die Pflege der Liste ist über Excel möglich. Die Namen sind mit eMail-Adressen verknüpft und falls vorhanden mit einem Foto versehen.

Realisierung

Ein VB-Skript öffnet Excel und speichert die Termine nach dem Beenden in einer eigenen JavaScript-Liste:

'Excel suchen
Set xls = CreateObject("Excel.Application")
Excel_Pfad=xls.Path&"\EXCEL.EXE"

'Excel starten
set shell = CreateObject("WScript.Shell")
CurDir=shell.CurrentDirectory
shell.run """"&Excel_Pfad&""" .\gebtab.geb",,1
'(warten, bis Excel geschlossen)

'Excel-Liste öffnen
Set wbk = xls.Workbooks.Open(CurDir&"\gebtab.geb")
Set sht = wbk.Sheets("Geburtstage")

'Text-Datei öffnen
Set objTextStream = CreateObject("scripting.FilesystemObject").CreateTextFile("gebjs.geb")

'Geburtstage lesen/schreiben
objTextStream.Write "// Erstellt mit G3B"&vbNewLine
i=1
do
i=i+1
geb=sht.Range("A"&i)
nam=sht.Range("B"&i)
ema=sht.Range("C"&i)
fot=sht.Range("D"&i)
lis="geb("""&geb&""","""&nam&""","""&ema&""","""&fot&""");"
if geb<>"" then objTextStream.Write lis&vbNewLine
loop while i<=999 and geb<>""

'Beenden/schließen
objTextStream.Write "geb_ende();"
objTextStream.Close
wbk.Close
xls.Quit

shell.popup "Geburtstage übernommen.",3,"G3B"
'(Meldung verschwindet nach 3 Sek.)

Ein JavaScript erzeugt aus dieser Termin-Liste den HTML-Code:

// Geburts-/Jahrestags-Erinnerung v3 (c) 2008 F.Perder (www.chfp.de)

zv=-1; // VON-Zeitraum (in Tagen, -1=Gestern,0=Heute)
zr=3; // BIS-Zeitraum (in Tagen, 1=Morgen,2=Übermorgen)
fp="fotos/"; // Pfad zu den Fotos (""=.)

gebb=false;
gebf="";
heut=new Date();
var tage=new Array("Heute","Morgen","Übermorgen");
var tage2=new Array("Gestern","Vorgestern");
var wochentag = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
function geb(dat,name,email,foto){
trt=false;if (email=="(TRAUERTAG)") { trt=true; email=""; }
jut=false;if (email=="(JUBELTAG)") { jut=true; email=""; }
if (email!=""&&email!=null) name="<a href=\"mailto:"+email+"\" title=\"eMail schreiben\">"+name+"</a>";
datu=dat.split(".");
tt=datu[0];
mm=datu[1];
jj=datu[2];
if (jj>0&&jj<1900) jj=1*jj+1900;
da=new Date(jj,mm-1,tt);
for (var i=zv;i<=zr;i++){
heu=new Date(heut.getTime()+i*86400000);
if (gleich(da,heu)) {
if (i>=0-tage2.length && i<0) r=tage2[-i-1];
else if (i>=0 && i<tage.length) r=tage[i];
else r=wochentag[heu.getDay()];
if (jut&&jj!="") name=(heu.getFullYear()-jj)+". "+name;
r=r+" ("+tt+"."+mm+".): "+name;
if (foto!=""&&foto!=null&&foto!=".jpg") fotodazu(foto,tt+"."+mm+".",jj);
if (jj!="") {
if (trt) r=r+" (&#134;"+jj+")"; else
if (!jut) r=r+" ("+(heu.getFullYear()-jj)+" J.,*"+jj+")";
}
if (trt) r="<span class=\"trauertag\">"+r+"</span>";
if (i==0) r="<span class=\"heute\">"+r+"</span>";
ausgabe(r);
}
}
}
function jub(dat,name,foto){
geb(dat,name,"(JUBELTAG)",foto);
}
function tra(dat,name,foto){
geb(dat,name,"(TRAUERTAG)",foto);
}
function gleich(d1,d2){
r=false;
if (d1.getDate()==d2.getDate() && d1.getMonth()==d2.getMonth()) r=true;
return r;
}
function ausgabe(rn){
if (gebb==false) document.writeln("<ul>");
gebb=true;
r="<li class=\"geb\">"+rn+"</li>";
document.writeln(r);
}
function fotodazu(foto,datum,jahr){
fclass="foto";
ftitle="*"+datum;
if (foto.slice(0,4)=="(t)_") {
fclass="trauerfoto";
ftitle="&#134;"+jahr;
}
gebf=gebf+"<img src=\""+fp+foto+"\" class=\""+fclass+"\" title=\""+ftitle+"\"> ";
}
function geb_ende(){
if (!gebb) ausgabe("<i>Keine Geburtstage in den nächsten "+zr+" Tagen!</i>");
document.writeln("</ul>");
document.writeln(gebf);
}

Der generierte Code wird durch einen Aufruf des JScriptes und der generierten Liste (ebenfalls JScript) an der gewünschten Stelle in die HTML-Datei eingefügt:

<!-- ============== Geburtstags-Skript (c) F.Perder ============== -->
<link rel="stylesheet" href="geb.css" type="text/css">
<script language="JavaScript" src="geb.js"></script>
<script language="JavaScript" src="gebjs.geb"></script>
<!-- ================== ENDE Geburtstags-Skript ================== -->

Download

Das komplette Programm inklusive einer Beispiel-Anwendung kann hier heruntergeladen werden: G3B

Skripte • © 2009 Computerhilfe Fabian Perder • www.chfp.de/skripte
Stats