Hinzufügen von wiederkehrendes Ereignis zu Google Kalender über XML
-
16-09-2019 - |
Frage
Ich versuche, ein wiederkehrendes Ereignis in meinen Kalender über das Protokoll API hinzuzufügen. Ich nahm die Syntax der Wiederholung Tag von einem Ereignis, das ich in den Google-Schnittstelle erstellt und verwendet das in meiner Anfrage zu erstellen. Hier ist, was ich vorgelegt:
<?xml version='1.0' encoding='utf-8' ?>
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'>
<category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category>
<title type='text'>Hi Stack Overflow!</title>
<content type='text'>Help me please!</content>
<gd:where valueString='StackOverflow.com'></gd:where>
<gd:recurrence>
DTSTART;TZID=America/Los_Angeles:20090824T080000
DTEND;TZID=America/Los_Angeles:20090824T090000
RRULE:FREQ=DAILY;WKST=SU;UNTIL=20090828T090000
BEGIN:VTIMEZONE TZID:America/Los_Angeles X-LIC-LOCATION:America/Los_Angeles
BEGIN:DAYLIGHT TZOFFSETFROM:-0800 TZOFFSETTO:-0700 TZNAME:PDT DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD TZOFFSETFROM:-0700 TZOFFSETTO:-0800 TZNAME:PST DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
</gd:recurrence>
</entry>
Das Ereignis wird hinzugefügt, aber es wird nicht wiederholt. Als ich bei der Wiederholung Abschnitt des resultierenden Ereignis Feed aussehen, dass die RRULE die sich wiederholende definiert ist nicht da.
Vielen Dank für jede Hilfe!
Lösung
Zwei Dinge:
-
Ihre Zeitzone Abschnitt ist nicht gültig - ich jede Eigenschaft glaube auf einer Linie auf seinem eigenen sein sollte
.
-
Ihr "bis" sollte eine UTC-Zeit sein. Aus RFC2445:
Wenn als Datum-Zeit-Wert angegeben, dann muss es in einem UTC-Format angegeben werden.
Also hier ist ein vollständiges Beispiel, die lokale Zeit für den „bis“ Teil zu UTC eingestellt zu haben, und erweiterte die Zeitzone:
DTSTART;TZID=America/Los_Angeles:20090824T080000
DTEND;TZID=America/Los_Angeles:20090824T090000
RRULE:FREQ=DAILY;WKST=SU;UNTIL=20090828T160000Z
BEGIN:VTIMEZONE
TZID:America/Los_Angeles
X-LIC-LOCATION:America/Los_Angeles
BEGIN:DAYLIGHT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
TZNAME:PDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
TZNAME:PST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
Ich habe einen schleichenden Verdacht, diese können haben eine neue Änderung.
Alternativ können Sie das VTIMEZONE Abschnitt vollständig versuchen Weglassen - nur die TZID liefern, die eine ID sein sollte, dass Sie wissen, Google Kalender unterstützt. Zum Beispiel:
DTSTART;TZID=America/Los_Angeles:20090824T080000
DTEND;TZID=America/Los_Angeles:20090824T090000
RRULE:FREQ=DAILY;WKST=SU;UNTIL=20090828T160000Z