innoQ

Vladimir's Tech Blog


Fixing Google Calendar with Yahoo Pipes

June 25, 2007

I use Google Calendar for managing my appointments and similar stuff. In particular I created my personal calendar and a calendar for innoQ events, that can be shared by all colleagues. I can imagine couple more calendar instances like if my wife wants to have one or one for windsurfing club in Kaarst.

The main google calendar UI is great and you can select multiple calendars to see them at once. But unfortunately not in the embeddable version - you can only show them individually. And even iGoogle on google.de does not work properly. I mean it shows the month, but it does not show any appointments, as lot of people noticed.

The pipes

yahoo_pipes.png

Luckily google offers the whole calendar data as both iCalendar and as a feed. OK, great opportunity to use Yahoo pipes for aggregating and adjusting the data, I thought. You can define RSS data sources, filter and connect them and even use regular expressions for manipulating the content.

Unfortunately with the Lego-style of programming you hit the limits pretty soon if you try a bit complexer transformation. And with a text oriented general purpose advanced programming language it is so much easier to achieve the desired result… see the next (upcoming) entry

Investigating google.de problems

One of the reasons why it so hard to process google’s XML calendar data is the strange localization approach. It seems like google is not interested in your “Accept-Language” http request header and urls like google.de or google.com have no particular meaning. The only thing, that counts, is the public IP address your request comes from. That is why, for example in the german office of a finnish company with English set as preferred language in the browser settings you get the google portal in Finnish language. Even if you type in “google.ru”, you will be redirected to google.fi. I know they want to show you the right ads, but it would be really helpful to get the user interface in the language you request.

By the way, this strange IP-based localization strategy seems to me (after some debugging) to be the cause why google calendar does not work on google.de. Even the content and meta data of the atom feed depends on public IP address of the computer the request comes from.

Here is an XML snippet:

<entry>
  <id>http://www.google.com/calendar/feeds/d16....hus%40group.calendar.google.com/private-...
  </id>
  <published>2007-02-19T20:24:15.000Z</published>
  <updated>2007-05-13T09:28:02.000Z</updated>
  <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/g/2005#event"/>
  <title type="text">innoQ Event</title>
  <summary type="html">
    Wann: Do 10. Mai 2007 bis Fr 11. Mai 2007&nbsp; <br>   <br>Status des Termins: bestÃĪtigt
  </summary>

As you can see under

the name of the field “Wann” means “when”, “Status des Termins” means “Status of the appointment” and even the value of the date itself is localized - no chance for automated parsing with Yahoo Pipes.

I hope the new official API GData is more developer friendly or I’ll try a small script with the simpler text oriented iCal format. Stay tuned…

Powered by Movable Type 3.31