2010-01-28 20 views
7

Estoy creando una aplicación web que gestiona ciertos tipos de eventos para los usuarios. Quiero proporcionar una forma de mostrar esos eventos dentro del calendario de google de un usuario.¿Cómo publicar un feed de eventos dinámico para el calendario de google?

Lo que realmente esperaba era una forma de publicar mi propio feed compatible con el calendario de Google y permitir a los usuarios suscribirse, como que pueden suscribirse a "calendarios interesantes". De modo que si los eventos cambian o se agregan nuevos eventos, se reflejan en su calendario. Pero parece que Google solo permite a los usuarios importar datos de calendario en formatos ical o csv, no en formato de alimentación atómica.

El problema es que los eventos existentes en mi aplicación web pueden cambiar y se agregan nuevos eventos. Quiero que esos cambios se reflejen de inmediato en el calendario de google. Y no puedo esperar que un usuario siga reimportando un archivo ICAL. La siguiente pregunta SO es muy similar, pero realmente no tiene una respuesta publicada: Generate a Google Calendar compatible feed

¿Estoy hablando de esta manera incorrecta? ¿Debo utilizar la API gdata para crear un calendario y publicar eventos en él? Parece que publicar un feed atom sería mucho más simple, pero si google no puede suscribirse a un feed atom, eso no funcionará.

Si simplemente publico mis eventos como un archivo ICAL, ¿el calendario de Google volverá a leer la URL regularmente y actualizará los datos? Algunos usuarios tienen 4 o 5 eventos por día, por lo que el archivo seguirá creciendo a medida que pase el tiempo. Realmente parece que esta no es una buena solución.

Respuesta

6

Al observar otros sitios que hacen esto, parece que Google sí vuelve a leer calendarios externos en formato ical con regularidad.

Depende de usted recortar la alimentación eléctrica que proporciona, por ejemplo, matando las fechas en el pasado.

Así que para resolver su problema:

  • generar un archivo iCal y sirven de su sitio web
  • consiguen sus usuarios suscribirse a ella en Google Calendar
  • refrescar periódicamente el archivo iCal, el recorte de edad datos

ejemplo mostrados & inicio del archivo ics de TripIt.com, donde esto parece funcionar bien:

curl -v http://..../tripit.ics 

< HTTP/1.1 200 OK 
< Server: nginx 
< Date: Fri, 29 Jan 2010 21:53:58 GMT 
< Content-Type: text/calendar; charset=utf-8 
< Transfer-Encoding: chunked 
< Connection: close 
< Expires: Fri, 29 Jan 2010 22:08:58 GMT 
< Cache-Control: private 
< 
BEGIN:VCALENDAR 
X-WR-CALNAME:Malcolm Box (TripIt) 
X-WR-CALDESC:TripIt Calendar 
X-PUBLISHED-TTL:PT15M 
PRODID:-//John Papaioannou/NONSGML Bennu 0.1//EN 
VERSION:2.0 
BEGIN:VEVENT 
... 
+0

Gracias, pero de acuerdo con este post, Google no actualiza de forma fiable desde una URL: http://www.google.com/support/forum/p/Calendar/thread?tid=3fad85f47a70864b&hl=en Do ¿Tiene ejemplos de sitios que publican en formato ical que funcionan de manera confiable? – Tauren

+1

Acabo de probarlo con TripIt - obtuve el enlace webcal: // (a un archivo ics), lo agregué a Google. Luego se agregó otro evento en tripit.com, se volvió a google y se mostró de inmediato. –

+0

Gracias Malcolm! Esto parece muy prometedor. Esperaba tener que proporcionar un feed ics para admitir calendarios de google, iphone, ical, outlook, etc. Si funciona para Tripit, entonces debería ser capaz de hacerlo funcionar también. – Tauren

0

Parece que para actualizar de forma fiable el calendario de Google tiene que utilizar la API: http://code.google.com/apis/calendar/data/2.0/developers_guide.html aunque apuesto desde un punto de vista pragmático, si usted tiene un archivo iCal razonablemente que actualiza con frecuencia, obtendrá un rendimiento decente .

+0

Aerik, estoy de acuerdo: usar la API gdata es probablemente la forma más confiable. Pero no ayudará con iPhone, iCal, Outlook y otros usuarios. Puede que termine yendo con gdata eventualmente, pero si un feed ics puede ser usado confiablemente en google, lo intentaré primero. – Tauren

2

Los usuarios de iCal, al menos, pueden suscribirse directamente al archivo ics. Encuentro que iCal muestra mis actualizaciones dentro de los 20 minutos, e incluso esa demora que supongo se debe a que el calendario que estoy usando (JEvents) solo actualiza el archivo ics de vez en cuando.

Google Calendar tarda horas en mostrar mis cambios: incluso si cancelo la suscripción y creo una nueva suscripción a la misma URL, veo eventos que se eliminaron hace mucho tiempo.

Cuestiones relacionadas