ich bekomme bei "events" den richtigen Wert zurück, bei "eventstomorrow" den Wert von heute und morgen - kann das an der Zeiteinstellung liegen? Kennt jemand das Thema?
Viele Grüße
Code: Alles auswählen
/Configuration
//Calendar to access (ID)
var cal = '6gq34i954jle6ijfdqui3a62jc@group.calendar.google.com';
function doGet(request) {
var answer = "1.5";
var d = 1 * request.parameters.d;
if (isNaN(d)){
d = 0;
};
if ( request.parameters.pwd == "test")
{
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 findNextGrey()
{
return findNext("Restmüll 2-wöchentlich");
}
function findNextYellow()
{
return findNext("Gelbe/r Sack/Tonne");
}
function findNextBrown()
{
return findNext("Biotonne");
}
function findNextBlue()
{
return findNext("Papiertonne");
}
//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 == 'blue')
{
return findNextBlue();
}
else if (aColor == 'yellow')
{
return findNextYellow();
}
else if (aColor == 'brown')
{
return findNextBrown();
}
}
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;
}