2010-01-28 17 views
7

Ich erstelle eine Webanwendung, die bestimmte Ereignistypen für Benutzer verwaltet. Ich möchte eine Möglichkeit bieten, diese Ereignisse im Google Kalender eines Benutzers anzuzeigen.So veröffentlichen Sie einen dynamischen Ereignisfeed für Google Kalender?

Auf was ich wirklich gehofft hatte, war eine Möglichkeit, meinen eigenen Google Kalender-kompatiblen Feed zu veröffentlichen und Benutzern zu erlauben, sie zu abonnieren, wie sie "interessante Kalender" abonnieren können. Wenn sich Ereignisse ändern oder neue Ereignisse hinzugefügt werden, werden sie in ihrem Kalender angezeigt. Aber es sieht so aus, als ob Google nur Kalenderdaten im is- oder CSV-Format importieren kann, nicht im Atom-Feed-Format.

Das Problem ist, bestehende Ereignisse in meiner Webapp können sich ändern und neue Ereignisse hinzugefügt werden. Ich möchte diese Änderungen sofort in Google Kalender widerspiegeln. Und ich kann nicht erwarten, dass ein Benutzer eine ICAL-Datei erneut importiert. Die folgende SO-Frage ist extrem ähnlich, aber hat nicht wirklich eine Antwort geschrieben: Generate a Google Calendar compatible feed

Gehe ich über den falschen Weg? Muss ich die gdata-API verwenden, um einen Kalender zu erstellen und Ereignisse zu veröffentlichen? Es scheint, als wäre die Veröffentlichung eines Atom-Feeds viel einfacher, aber wenn Google einen Atom-Feed nicht abonnieren kann, wird das nicht funktionieren.

Wenn ich meine Ereignisse einfach als ICAL-Datei veröffentliche, wird Google Kalender die URL regelmäßig erneut lesen und die Daten aktualisieren? Einige Benutzer haben 4 oder 5 Ereignisse pro Tag, so dass die Datei mit der Zeit immer größer wird. Es scheint wirklich, dass dies keine gute Lösung ist.

Antwort

6

Mit Blick auf andere Websites, die dies tun, scheint es, dass Google regelmäßig externe Kalender im ical Format liest.

Es liegt an Ihnen, den von Ihnen bereitgestellten ical-Feed zu kürzen, z. B. indem Daten in der Vergangenheit gelöscht werden.

So Ihr Problem zu lösen:

  • eine ische Datei erzeugen und dient von Ihrer Website
  • erhalten die Benutzer, um es in Google Kalender abonnieren
  • regelmäßig die ische Datei aktualisieren, Trimmen alt
  • Daten

Beispiel headers & Beginn der ics-Datei von TripIt.com, wo dies gut zu funktionieren scheint:

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

Danke, aber nach diesem Post, Google nicht zuverlässig von einer URL aktualisieren: http://www.google.com/support/forum/p/Calendar/thread?tid=3fad85f47a70864b&hl=en Do Sie haben Beispiele für Sites, die im ical-Format publizieren und zuverlässig funktionieren? – Tauren

+1

Ich habe es gerade mit TripIt ausprobiert - habe den webcal: // - Link (zu einer ics-Datei), habe ihn zu Google hinzugefügt. Dann ein weiteres Event bei Tripit.com hinzugefügt, ging zurück zu Google und es wurde sofort gezeigt. –

+0

Danke Malcolm! Das sieht sehr vielversprechend aus. Ich hatte gehofft, nur einen ics-feed zur Verfügung stellen zu müssen, um Google-Kalender, iphone, ical, Outlook usw. zu unterstützen. Wenn es für Tripit arbeitet, dann sollte es auch funktionieren. – Tauren

0

Sieht aus wie zuverlässig den Google Kalender aktualisieren Sie die API verwenden: http://code.google.com/apis/calendar/data/2.0/developers_guide.html obwohl ich aus pragmatischer Sicht wette, wenn Sie eine ical-Datei, die einigermaßen häufig aktualisiert, werden Sie ordentliche Leistung erhalten .

+0

Aerik, ich stimme zu - mit der gdata API ist wahrscheinlich der zuverlässigste Weg. Aber es wird nicht mit iPhone, iCal, Outlook und anderen Benutzern helfen. Ich könnte am Ende mit gdata gehen, aber wenn ein ics Feed zuverlässig in Google verwendet werden kann, werde ich es zuerst versuchen. – Tauren

2

iCal-Benutzer können zumindest direkt die ics-Datei abonnieren. Ich finde, iCal zeigt meine Updates innerhalb von 20 Minuten oder so an, und selbst diese Verzögerung rate ich, weil der Kalender, den ich verwende (JEvents), die ics-Datei nur so oft aktualisiert.

Google Kalender dauert Stunden, um meine Änderungen zu zeigen - selbst wenn ich mich abmelde und ein neues Abonnement für dieselbe URL erstelle, sehe ich Ereignisse, die vor langer Zeit gelöscht wurden.

Verwandte Themen