Hallo Leute,
Ich habe mir das google-Script aus dem Post
viewtopic.php?f=35&t=34325&start=30#p330178, was seinen Ursprung hier hatte, umgeschrieben um mir meine Schichten anzeigen zu lassen. Frühschicht, Spätschicht, Nachtschicht, Urlaub. Es funktioniert auch soweit. Nur bei Frühschicht zeigt er mir nichts an bzw. es kommen 3 Fragezeichen, da der nächste Termin in 6 Wochen ist. Kann ich den Suchzeitraum erweitern oder ist er begrenzt? Ich habe zu Testzwecken Frühschicht mal früher gesetzt, das Funktioniert auf jeden Fall. Meine nächste Frühschicht ist erst wieder am 11.11.
Hier meine Scripte
Code: Alles auswählen
//Configuration
//Calendar to access (ID)
var cal = 'abcxxx@group.calendar.google.com';
function doGet(request) {
var answer = "1.4";
var d = 1 * request.parameters.d;
if (isNaN(d)){
d = 0;
};
if ( request.parameters.pwd == "test")
{
if ( request.parameters.cmd == "urlaub" )
{
answer = getVacation(d);
}
else if (request.parameters.cmd == "urlaub_ex" )
{
answer = getVacationEx(d);
}
else if (request.parameters.cmd == "events" )
{
answer = getEventsOfDay(d);
}
else if (request.parameters.cmd == "eventstomorrow" )
{
answer = getEventsOfDay(1);
}
else if ((request.parameters.cmd == "muell") && (request.parameters.color))
{
if (request.parameters.mode == "nextdate")
{
answer = FormatedEventDate(findNextMuell(request.parameters.color));
}
else if (request.parameters.mode == "indays")
{
answer = DaysUntilEvent(findNextMuell(request.parameters.color));
}
else
{
answer = DaysUntilEventNice(findNextMuell(request.parameters.color));
}
}
}
return ContentService.createTextOutput(answer);
}
function getEventsInRange(aStart, aEnd)
{
var events = CalendarApp.getCalendarById(cal).getEvents(aStart, aEnd);
var result = new Array;
var eventStart = 0;
var eventEnd = 0;
var startTime = aStart.getTime();
var endTime = aEnd.getTime();
for (var i=0; i<events.length; i++)
{
//Zeiten testen (bug bei allDayEvents)
//ich verzichte auf Anpassung von Start/Endzeit auf UTC, bei Abfage von ganzen Tagen sind die korrekten Events enthalten,
//die zusätlich von angrenzenden Tagen enthaltenen Events werden hier aussortiert.
if ((events[i].getEndTime().getTime() > startTime) && (events[i].getStartTime().getTime() < endTime))
{
result.push(events[i]);
}
}
return result;
}
function daysEvents( aDate )
{
var startOfDay = new Date(aDate);
startOfDay.setHours(0);
startOfDay.setMinutes(0);
startOfDay.setSeconds(0);
startOfDay.setMilliseconds(0);
var endOfDay = new Date(startOfDay.getTime() + 24 * 60 * 60 * 1000);
return getEventsInRange(startOfDay, endOfDay);
}
function findNext( aPattern )
{
var patt=new RegExp(aPattern,'i');
var startDate = new Date();
var endDate = new Date(startDate.getTime() + (24*60*60*1000*30));
var events = getEventsInRange(startDate, endDate);
for (var i=0; i<events.length; i++)
{
//check event title
if (patt.test(events[i].getTitle()))
{
return events[i];
}
}
}
function findNextGreen()
{
return findNext("Frühschicht");
}
function findNextGrey()
{
return findNext("Spätschicht");
}
function findNextYellow()
{
return findNext("Nachtschicht");
}
function findNextBrown()
{
return findNext("Urlaub");
}
function findNextBlue()
{
return findNext("blaue Tonne|Papiermüll|Papiermuell|Altpapier");
}
//Events am Tag aDay ab heute (0 = heute, 1 = morgen...)
function eventsOfDay(aDay)
{
var now = new Date();
var day = new Date(now.getTime() + (1000*3600*24*aDay));
var events = daysEvents( day );
return events;
}
function findNextMuell( aColor )
{
if (aColor == 'grey')
{
return findNextGrey();
}
else if (aColor == 'green')
{
return findNextGreen();
}
else if (aColor == 'blue')
{
return findNextBlue();
}
else if (aColor == 'yellow')
{
return findNextYellow();
}
else if (aColor == 'brown')
{
return findNextBrown();
}
}
//Urlaub am Tag aDay (0 = heute, 1=morgen...)
function getVacation( aDay )
{
var events = eventsOfDay( aDay );
var result = "0";
//add here your search definitions for vacation description and location 'home'
var pattVacation=new RegExp('urlaub|vacation|frei','i');
// var pattHome=new RegExp('hause|home','i');
for (var i=0; i<events.length; i++)
{
var theTitle=events[i].getTitle();
if ( pattVacation.test(events[i].getTitle()) && events[i].isAllDayEvent() )
{
result="1";
break;
}
}
return (result);
}
// added from http://homematic-forum.de/forum/viewtopic.php?f=31&t=11386#p84827
function getVacationEx( aDay )
//creates a bit mask including todays and tomorrows vacation information
{
//init bit mask and flags
var result = 0x0; //0000 - initial value
var vacationToday = 0x1; // 0001 - today is an vacation day
var atHomeToday = 0x2; // 0010 - vacation today is at home
var vacationTomorrow = 0x4; // 0100 - tomorrow is an vacation day
var atHomeTomorrow = 0x8; // 1000 - vacation tomorrow is at home
//add here your search definitions for vacation description and location 'home'
var pattVacation=new RegExp('urlaub|vacation|frei|homeoffice','i');
var pattHome=new RegExp('hause|home','i');
//get information about today's vacation
var eventsToday = eventsOfDay(aDay);
for (var i=0; i<eventsToday.length; i++)
{
//check event title
if (pattVacation.test(eventsToday[i].getTitle()))
{
result = result | vacationToday;
//
if (pattHome.test(eventsToday[i].getTitle()) || pattHome.test(eventsToday[i].getLocation())|| pattHome.test(eventsToday[i].getDescription()))
{
result = result | atHomeToday;
}
}
}
//get information about tomorrow's vacation
var eventsTomorrow = eventsOfDay(aDay + 1);
for (var i=0; i<eventsTomorrow.length; i++)
{
if (pattVacation.test(eventsTomorrow[i].getTitle()))
{
result = result | vacationTomorrow;
if (pattHome.test(eventsTomorrow[i].getTitle()) || pattHome.test(eventsTomorrow[i].getLocation())|| pattHome.test(eventsTomorrow[i].getDescription()))
{
result = result | atHomeTomorrow;
}
}
}
return (result.toString());
}
function getEventsOfDay( aDay )
{
var events = eventsOfDay(aDay);
var result = "";
for (var i=0; i<events.length; i++)
{
if ( result.length > 0) {
result = result+";";
}
result = result + events[i].getTitle().toLowerCase();
}
return result;
}
function FormatedEventDate( aEvent )
{
if (aEvent)
{
var timezone = CalendarApp.getCalendarById(cal).getTimeZone();
var res = Utilities.formatDate(aEvent.getStartTime(), timezone, "dd.MM.yyyy");
return res;
}
}
function DaysUntilEvent( aEvent )
{
if (aEvent)
{
var startOfToday = new Date();
startOfToday.setHours(0);
startOfToday.setMinutes(0);
startOfToday.setSeconds(0);
startOfToday.setMilliseconds(0);
var differenceInMillis = aEvent.getStartTime() - startOfToday.getTime();
return Math.floor( differenceInMillis /1000/60/60/24 );
}
}
function DaysUntilEventNice( aEvent )
{
result = '';
var days = 1 * DaysUntilEvent(aEvent);
if (!isNaN(days))
{
if (days == 0)
{
result = 'Heute';
}
else if (days == 1)
{
result = 'Morgen';
}
else if (days == 2)
{
result = 'Übermorgen';
}
else
{
result = 'In ' + days + ' Tagen';
}
}
else
{
result = 'nicht gefunden';
}
return result;
}
Code: Alles auswählen
var url="https://script.google.com/macros/s/abcxxx-oQXX2o1B6x2xPJy30jVkcF4O5uBfd5/exec";
var cmd = "LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k -L '" # url # "?pwd=test&cmd=muell&color=grey&mode=nextdate'";
dom.GetObject("CUxD.CUX2801002:1.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801002:1.CMD_QUERY_RET").State(1);
var oV = dom.GetObject("CUxD.CUX2801002:1.CMD_RETS").State();
var lMuell = dom.GetObject("SpätschichtDatum");
WriteLine("x" # oV # "x");
if ( oV == "" ){
oV = "keinMüll";
lMuell.State(oV);
}
else
{
string lErsetzen = "ä,ü,ö";
string lErsetzenDurch = "ä,ü,ö";
string lTextNeu = oV;
integer lPos = 0;
integer lIndex = 0;
string lSplit = "";
boolean lLoop = true;
foreach (lSplit, lErsetzen.Split(","))
{
lLoop = true;
while (lLoop)
{
lPos = lTextNeu.Find(lSplit);
if (lPos == -1)
{
lLoop = false;
}
else
{
lTextNeu = lTextNeu.Substr(0,lPos) # lErsetzenDurch.StrValueByIndex(",",lIndex) # lTextNeu.Substr(lPos + lSplit.Length() , ((lTextNeu.Length() - lPos) - lSplit.Length()) );
}
}
lIndex = lIndex + 1;
}
}
oV = "";
string lBind = ", ";
foreach (lSplit, lTextNeu.Split(";"))
{
oV = oV + lBind + lSplit;
lTextNeu = oV.Substr(2,oV.Length());
}
if ( lTextNeu != "")
{
lMuell.State(lTextNeu);
WriteLine(lTextNeu);
}
var url="https://script.google.com/macros/s/abcxxx-oQXX2o1B6x2xPJy30jVkcF4O5uBfd5/exec";
var cmd = "LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k -L '" # url # "?pwd=test&cmd=muell&color=grey&mode=indays'";
dom.GetObject("CUxD.CUX2801002:1.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801002:1.CMD_QUERY_RET").State(1);
var oV = dom.GetObject("CUxD.CUX2801002:1.CMD_RETS").State();
var lMuell = dom.GetObject("SpätschichtTage");
WriteLine("x" # oV # "x");
if ( oV == "" ){
oV = "keinMüll";
lMuell.State(oV);
}
else
{
string lErsetzen = "ä,ü,ö";
string lErsetzenDurch = "ä,ü,ö";
string lTextNeu = oV;
integer lPos = 0;
integer lIndex = 0;
string lSplit = "";
boolean lLoop = true;
foreach (lSplit, lErsetzen.Split(","))
{
lLoop = true;
while (lLoop)
{
lPos = lTextNeu.Find(lSplit);
if (lPos == -1)
{
lLoop = false;
}
else
{
lTextNeu = lTextNeu.Substr(0,lPos) # lErsetzenDurch.StrValueByIndex(",",lIndex) # lTextNeu.Substr(lPos + lSplit.Length() , ((lTextNeu.Length() - lPos) - lSplit.Length()) );
}
}
lIndex = lIndex + 1;
}
}
oV = "";
string lBind = ", ";
foreach (lSplit, lTextNeu.Split(";"))
{
oV = oV + lBind + lSplit;
lTextNeu = oV.Substr(2,oV.Length());
}
if ( lTextNeu != "")
{
lMuell.State(lTextNeu);
WriteLine(lTextNeu);
}
var url="https://script.google.com/macros/s/abcxxx-oQXX2o1B6x2xPJy30jVkcF4O5uBfd5/exec";
var cmd = "LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k -L '" # url # "?pwd=test&cmd=muell&color=green&mode=nextdate'";
dom.GetObject("CUxD.CUX2801002:1.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801002:1.CMD_QUERY_RET").State(1);
var oV = dom.GetObject("CUxD.CUX2801002:1.CMD_RETS").State();
var lMuell = dom.GetObject("FrühschichtDatum");
WriteLine("x" # oV # "x");
if ( oV == "" ){
oV = "keinMüll";
lMuell.State(oV);
}
else
{
string lErsetzen = "ä,ü,ö";
string lErsetzenDurch = "ä,ü,ö";
string lTextNeu = oV;
integer lPos = 0;
integer lIndex = 0;
string lSplit = "";
boolean lLoop = true;
foreach (lSplit, lErsetzen.Split(","))
{
lLoop = true;
while (lLoop)
{
lPos = lTextNeu.Find(lSplit);
if (lPos == -1)
{
lLoop = false;
}
else
{
lTextNeu = lTextNeu.Substr(0,lPos) # lErsetzenDurch.StrValueByIndex(",",lIndex) # lTextNeu.Substr(lPos + lSplit.Length() , ((lTextNeu.Length() - lPos) - lSplit.Length()) );
}
}
lIndex = lIndex + 1;
}
}
oV = "";
string lBind = ", ";
foreach (lSplit, lTextNeu.Split(";"))
{
oV = oV + lBind + lSplit;
lTextNeu = oV.Substr(2,oV.Length());
}
if ( lTextNeu != "")
{
lMuell.State(lTextNeu);
WriteLine(lTextNeu);
}
var url="https://script.google.com/macros/s/abcxxx-oQXX2o1B6x2xPJy30jVkcF4O5uBfd5/exec";
var cmd = "LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k -L '" # url # "?pwd=test&cmd=muell&color=green&mode=indays'";
dom.GetObject("CUxD.CUX2801002:1.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801002:1.CMD_QUERY_RET").State(1);
var oV = dom.GetObject("CUxD.CUX2801002:1.CMD_RETS").State();
var lMuell = dom.GetObject("FrühschichtTage");
WriteLine("x" # oV # "x");
if ( oV == "" ){
oV = "keinMüll";
lMuell.State(oV);
}
else
{
string lErsetzen = "ä,ü,ö";
string lErsetzenDurch = "ä,ü,ö";
string lTextNeu = oV;
integer lPos = 0;
integer lIndex = 0;
string lSplit = "";
boolean lLoop = true;
foreach (lSplit, lErsetzen.Split(","))
{
lLoop = true;
while (lLoop)
{
lPos = lTextNeu.Find(lSplit);
if (lPos == -1)
{
lLoop = false;
}
else
{
lTextNeu = lTextNeu.Substr(0,lPos) # lErsetzenDurch.StrValueByIndex(",",lIndex) # lTextNeu.Substr(lPos + lSplit.Length() , ((lTextNeu.Length() - lPos) - lSplit.Length()) );
}
}
lIndex = lIndex + 1;
}
}
oV = "";
string lBind = ", ";
foreach (lSplit, lTextNeu.Split(";"))
{
oV = oV + lBind + lSplit;
lTextNeu = oV.Substr(2,oV.Length());
}
if ( lTextNeu != "")
{
lMuell.State(lTextNeu);
WriteLine(lTextNeu);
}
var url="https://script.google.com/macros/s/abcxxx-oQXX2o1B6x2xPJy30jVkcF4O5uBfd5/exec";
var cmd = "LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k -L '" # url # "?pwd=test&cmd=muell&color=yellow&mode=nextdate'";
dom.GetObject("CUxD.CUX2801002:1.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801002:1.CMD_QUERY_RET").State(1);
var oV = dom.GetObject("CUxD.CUX2801002:1.CMD_RETS").State();
var lMuell = dom.GetObject("NachtschichtDatum");
WriteLine("x" # oV # "x");
if ( oV == "" ){
oV = "keinMüll";
lMuell.State(oV);
}
else
{
string lErsetzen = "ä,ü,ö";
string lErsetzenDurch = "ä,ü,ö";
string lTextNeu = oV;
integer lPos = 0;
integer lIndex = 0;
string lSplit = "";
boolean lLoop = true;
foreach (lSplit, lErsetzen.Split(","))
{
lLoop = true;
while (lLoop)
{
lPos = lTextNeu.Find(lSplit);
if (lPos == -1)
{
lLoop = false;
}
else
{
lTextNeu = lTextNeu.Substr(0,lPos) # lErsetzenDurch.StrValueByIndex(",",lIndex) # lTextNeu.Substr(lPos + lSplit.Length() , ((lTextNeu.Length() - lPos) - lSplit.Length()) );
}
}
lIndex = lIndex + 1;
}
}
oV = "";
string lBind = ", ";
foreach (lSplit, lTextNeu.Split(";"))
{
oV = oV + lBind + lSplit;
lTextNeu = oV.Substr(2,oV.Length());
}
if ( lTextNeu != "")
{
lMuell.State(lTextNeu);
WriteLine(lTextNeu);
}
var url="https://script.google.com/macros/s/abcxxx-oQXX2o1B6x2xPJy30jVkcF4O5uBfd5/exec";
var cmd = "LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k -L '" # url # "?pwd=test&cmd=muell&color=yellow&mode=indays'";
dom.GetObject("CUxD.CUX2801002:1.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801002:1.CMD_QUERY_RET").State(1);
var oV = dom.GetObject("CUxD.CUX2801002:1.CMD_RETS").State();
var lMuell = dom.GetObject("NachtschichtTage");
WriteLine("x" # oV # "x");
if ( oV == "" ){
oV = "keinMüll";
lMuell.State(oV);
}
else
{
string lErsetzen = "ä,ü,ö";
string lErsetzenDurch = "ä,ü,ö";
string lTextNeu = oV;
integer lPos = 0;
integer lIndex = 0;
string lSplit = "";
boolean lLoop = true;
foreach (lSplit, lErsetzen.Split(","))
{
lLoop = true;
while (lLoop)
{
lPos = lTextNeu.Find(lSplit);
if (lPos == -1)
{
lLoop = false;
}
else
{
lTextNeu = lTextNeu.Substr(0,lPos) # lErsetzenDurch.StrValueByIndex(",",lIndex) # lTextNeu.Substr(lPos + lSplit.Length() , ((lTextNeu.Length() - lPos) - lSplit.Length()) );
}
}
lIndex = lIndex + 1;
}
}
oV = "";
string lBind = ", ";
foreach (lSplit, lTextNeu.Split(";"))
{
oV = oV + lBind + lSplit;
lTextNeu = oV.Substr(2,oV.Length());
}
if ( lTextNeu != "")
{
lMuell.State(lTextNeu);
WriteLine(lTextNeu);
}
var url="https://script.google.com/macros/s/abcxxx-oQXX2o1B6x2xPJy30jVkcF4O5uBfd5/exec";
var cmd = "LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k -L '" # url # "?pwd=test&cmd=muell&color=brown&mode=nextdate'";
dom.GetObject("CUxD.CUX2801002:1.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801002:1.CMD_QUERY_RET").State(1);
var oV = dom.GetObject("CUxD.CUX2801002:1.CMD_RETS").State();
var lMuell = dom.GetObject("SYS-Urlaub-01-Termine");
WriteLine("x" # oV # "x");
if ( oV == "" ){
oV = "keinMüll";
lMuell.State(oV);
}
else
{
string lErsetzen = "ä,ü,ö";
string lErsetzenDurch = "ä,ü,ö";
string lTextNeu = oV;
integer lPos = 0;
integer lIndex = 0;
string lSplit = "";
boolean lLoop = true;
foreach (lSplit, lErsetzen.Split(","))
{
lLoop = true;
while (lLoop)
{
lPos = lTextNeu.Find(lSplit);
if (lPos == -1)
{
lLoop = false;
}
else
{
lTextNeu = lTextNeu.Substr(0,lPos) # lErsetzenDurch.StrValueByIndex(",",lIndex) # lTextNeu.Substr(lPos + lSplit.Length() , ((lTextNeu.Length() - lPos) - lSplit.Length()) );
}
}
lIndex = lIndex + 1;
}
}
oV = "";
string lBind = ", ";
foreach (lSplit, lTextNeu.Split(";"))
{
oV = oV + lBind + lSplit;
lTextNeu = oV.Substr(2,oV.Length());
}
if ( lTextNeu != "")
{
lMuell.State(lTextNeu);
WriteLine(lTextNeu);
}
var url="https://script.google.com/macros/s/abcxxx-oQXX2o1B6x2xPJy30jVkcF4O5uBfd5/exec";
var cmd = "LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k -L '" # url # "?pwd=test&cmd=muell&color=brown&mode=indays'";
dom.GetObject("CUxD.CUX2801002:1.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801002:1.CMD_QUERY_RET").State(1);
var oV = dom.GetObject("CUxD.CUX2801002:1.CMD_RETS").State();
var lMuell = dom.GetObject("UrlaubTorstenTage");
WriteLine("x" # oV # "x");
if ( oV == "" ){
oV = "keinMüll";
lMuell.State(oV);
}
else
{
string lErsetzen = "ä,ü,ö";
string lErsetzenDurch = "ä,ü,ö";
string lTextNeu = oV;
integer lPos = 0;
integer lIndex = 0;
string lSplit = "";
boolean lLoop = true;
foreach (lSplit, lErsetzen.Split(","))
{
lLoop = true;
while (lLoop)
{
lPos = lTextNeu.Find(lSplit);
if (lPos == -1)
{
lLoop = false;
}
else
{
lTextNeu = lTextNeu.Substr(0,lPos) # lErsetzenDurch.StrValueByIndex(",",lIndex) # lTextNeu.Substr(lPos + lSplit.Length() , ((lTextNeu.Length() - lPos) - lSplit.Length()) );
}
}
lIndex = lIndex + 1;
}
}
oV = "";
string lBind = ", ";
foreach (lSplit, lTextNeu.Split(";"))
{
oV = oV + lBind + lSplit;
lTextNeu = oV.Substr(2,oV.Length());
}
if ( lTextNeu != "")
{
lMuell.State(lTextNeu);
WriteLine(lTextNeu);
}
Und eine 2. Frage habe ich auch noch:
Mit Hilfe von
Frage ich die Termine der nächsten 3 Tage ab. Gibt es auch eine Möglichkeit die dazuhörige Uhrzeit mit abzufragen?