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+" (†"+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="†"+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
|