9
votes

Comment publier un flux d'événements dynamique pour Google Calendar?

Je construis une webApp qui gère certains types d'événements pour les utilisateurs. Je souhaite fournir un moyen d'afficher ces événements à l'intérieur du calendrier Google de l'utilisateur.

Qu'est-ce que j'espérais vraiment avoir été un moyen de publier mon propre flux compatible Google Calendrier et de permettre aux utilisateurs de s'abonner à celui-ci, comme s'ils peuvent s'abonner aux "calendriers intéressants". Ainsi, si des événements changent ou de nouveaux événements sont ajoutés, ils sont reflétés dans leur calendrier. Mais il semble que Google ne permet que des utilisateurs importer des données calendaires dans des formats ICAL ou CSV, non au format d'alimentation en Atom.

Le problème est que les événements existants de mon webApp peuvent changer et de nouveaux événements sont ajoutés. Je veux que ces modifications soient immédiatement reflétées dans Google Calendar. Et je ne peux pas m'attendre à ce que un utilisateur continue de réimporter un fichier ICAL. La question suivante est donc extrêmement similaire, mais n'a pas vraiment de réponse affichée: Générer un flux compatible Google Calendrier

Est-ce que je vais à ce sujet le mauvais chemin? Dois-je utiliser l'API GDATA pour créer un calendrier et publier des événements? Il semble que la publication d'un aliment d'atome serait beaucoup plus simple, mais si Google ne peut pas abonner à un flux d'atome, cela ne fonctionnera pas.

Si je publie simplement mes événements en tant que fichier ICAL, Google Calendar relie-t-il l'URL régulièrement et mettra à jour les données? Certains utilisateurs mes ont 4 ou 5 événements chaque jour, le fichier continuera donc à devenir plus grand et plus grand que le temps passe. Cela semble vraiment que ce n'est pas une bonne solution.


0 commentaires

3 Réponses :


8
votes

En regardant d'autres sites qui font cela, il semblerait que Google ait relu régulièrement des calendriers externes en format ICAL.

Il vous est alors à vous de couper le flux ical que vous fournissez par exemple en tuant des dates dans le passé. p>

pour résoudre votre problème: p>

  • Générez un fichier ICAL et servir à partir de votre site Web LI>
  • Obtenez vos utilisateurs de s'abonner à celui-ci dans Google Calendar Li>
  • Actualisez régulièrement le fichier ICAL, coupant les anciennes données li> ul>

    Exemple d'en-têtes et début du fichier ICS de tripit.com, où cela semble bien fonctionner: P>

    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
    ...
    


3 commentaires

Merci, mais selon ce poste, Google ne met pas à jour de manière fiable à partir d'une URL: Google.com/support/forum/p/calendar/... Avez-vous des exemples de sites publiés en format ICAL qui fonctionnent de manière fiable?


Je viens de l'essayer avec Tripit - obtenu le webcal: // link (à un fichier ICS), l'a ajouté à Google. Ensuite, a ajouté un autre événement sur Tripit.com, je suis retourné à Google et il a été immédiatement montré.


Merci Malcolm! Cela semble très prometteur. J'espérais seulement avoir à fournir un flux ICS pour soutenir Google Calendriers, iPhone, ICAL, Perspectives, etc. Si son travail pour TripIt, je devrais pouvoir le faire fonctionner aussi.



0
votes

On dirait de mettre à jour de manière fiable le calendrier Google, vous devez utiliser l'API: http://code.google.com/apis/calendar/data/2.0/developers_guide.html Bien que je parie d'un point de vue pragmatique, si vous avez un fichier ical qui met à jour raisonnablement souvent, Vous obtiendrez une performance décente.


1 commentaires

Aerik, je suis d'accord - à l'aide de l'API GDATA est probablement le moyen le plus fiable. Mais cela ne vous aidera pas avec iPhone, ICAL, Outlook et d'autres utilisateurs. Je peux finir par aller avec GDATA finalement, mais si un flux ICS peut être utilisé de manière fiable dans Google, je vais l'essayer d'abord.



3
votes

Les utilisateurs ICAL, au moins, peuvent souscrire directement au fichier ICS. Je trouve ICAL montre mes mises à jour dans les 20 minutes environ, et même ce retard que je devine est parce que le calendrier que j'utilise (Jevents) ne met à jour que le fichier ICS de temps en temps.

Google Calendar prend des heures pour montrer mes modifications - même si je vous désabonnement et crée un nouveau abonnement à la même URL, je vois des événements qui ont été supprimés il y a longtemps.


0 commentaires