L'aggiunta di evento ricorrente a Google Calendar tramite XML
-
16-09-2019 - |
Domanda
Sto cercando di aggiungere un evento ricorrente al mio calendario tramite l'API protocollo. Ho preso la sintassi del tag recidiva da un evento che ho creato nell'interfaccia di Google e usato che nella mia creano richiesta. Ecco quello che ho presentato:
<?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>
viene aggiunto l'evento, ma non si ripete. Quando guardo la sezione ricorrenza del mangime evento risultante, la RRULE che definisce la ripetizione non c'è.
Grazie per tutto l'aiuto!
Soluzione
Due cose:
-
Il tuo sezione fuso orario non è valido - Credo che ogni proprietà deve essere su una riga da solo
.
-
Il "fino a quando" dovrebbe essere un tempo UTC. Da RFC2445:
Se specificato come un valore data-ora, allora deve essere specificato in un formato di ora UTC.
Quindi, ecco un esempio completo, aver regolato l'ora locale di UTC per il "fino a che" una parte, e ampliato il fuso orario:
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
ho un vago sospetto questa possono essere stato un recente cambiamento.
In alternativa, si potrebbe desiderare di provare a omettere la sezione VTIMEZONE del tutto - basta fornire il TZID, che dovrebbe essere un ID che si sa Google Calendar supporta. Ad esempio:
DTSTART;TZID=America/Los_Angeles:20090824T080000
DTEND;TZID=America/Los_Angeles:20090824T090000
RRULE:FREQ=DAILY;WKST=SU;UNTIL=20090828T160000Z