Google Calendar API

Hello everyone

Does anyone have any experience of accessing the Google C. API
with Rails?

I’m using Ben’s page as a starting point.

I’ve installed the libraries but I can get data, I can add data, good

I’m now starting to use the get_calendars method of the gdata class
and I’m having problems.

Namely, this bit of code

require ‘googlecalendar’
g =
g.login(‘[email protected]’,
calendar_list = g.get_calendars()
print calendar_list

Now I’m getting back a 200 OK message object back, I thought I’d be
getting an array of calendars I’m a member of.

Has anyone been down this track?

Any information would be helpful and I’ll gladly share my experience
of setting this up with anyone else.

A bit more information, if I output this instead I can see exactly
what I’m getting back.

print calendar_list.inspect

This gives me back

#<Net::HTTPOK 200 OK readbody=true>

calendar_list.each { |key, value| print key + ’ = ’ + value + “\n” }

gives me back

<Net::HTTPOK 200 OK readbody=true>last-modified = Thu, 10 Apr 2008
11:32:57 GMT
cache-control = max-age=0, must-revalidate, private
connection = Close
date = Thu, 10 Apr 2008 11:32:57 GMT
content-type = application/atom+xml; charset=UTF-8
server = GFE/1.3
transfer-encoding = chunked

I’m starting to think that the get_calendars method is not doing what
it describes itself doing in it’s own logic here

Although it’s much more likely a syntaxical errror on my behalf :slight_smile:

Hi, I would recommend trying to invoke the following code in the
require ‘googlecalendar’
g =
g.login(‘[email protected]’,
calendar_list = g.get_calendars()
print calendar_list

Good luck,


Hi Conrad, thanks for getting back to me.

The code you suggested I try is exactly the same code that I pasted
into the ticket initially :slight_smile:

I found the problem.

In the get_calendars() method the redirect_response was being
returned, not the redirect_data.

Changing that line to return redirect_data gives me exactly what I was
looking for, a list of calendars that I have access to.

Thanks anyway Conrad.


Don’t listen to me

There’s nothing wrong with the redirect_response line, I wasn’t using
the right syntax to get at the data.

print calendar_list.body

That’s the puppy.

Worked it out in the end.

Here’s how you access your GData get_calendars() data and strip out
the ID of each entry(calendar) and the name of each entry and create a
hash out of the data to use somewhere else.

require ‘hpricot’
require ‘googlecalendar’

k =
k.login(‘[email protected]’, ‘yourpassword’)
bcalendar_list = k.get_calendars()
calendar_list = bcalendar_list.body
doc = Hpricot(bcalendar_list.body.to_s)
@cal_names =
(doc/:entry).each do |item|
@cal_names[item/:id] = item/:name