La adición de evento recurrente a Google Calendar a través de XML
-
16-09-2019 - |
Pregunta
Estoy tratando de añadir un evento recurrente a mi calendario a través de la API de Protocolo. Tomé la sintaxis de la etiqueta de la recurrencia de un evento que creé en la interfaz de Google y utilizado que en mi petición de crear. Esto es lo que presenté:
<?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>
Se añade el evento, pero no se repite. Cuando miro a la sección de la recurrencia de la alimentación de evento resultante, la RRULE que define la repetición no está allí.
Gracias por cualquier ayuda!
Solución
Dos cosas:
-
Su sección de zona horaria no es válida - Creo que cada propiedad debe estar en una línea por sí mismo
.
-
Su "hasta que" debe ser una hora UTC. De RFC2445:
Si se especifica como un valor de fecha y hora, entonces se deberá especificarse en un formato de hora UTC.
Así que aquí está un ejemplo completo, después de haber ajustado la hora local a UTC para el "hasta" parte, y ampliado la zona horaria:
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
tengo la sospecha de este puede ha habido un cambio reciente.
Como alternativa, es posible que desee intentar omitir por completo la sección VTIMEZONE - acaba de suministrar la TZID, que debe ser un identificador que usted sabe Google Calendar admite. Por ejemplo:
DTSTART;TZID=America/Los_Angeles:20090824T080000
DTEND;TZID=America/Los_Angeles:20090824T090000
RRULE:FREQ=DAILY;WKST=SU;UNTIL=20090828T160000Z