I use Google Calendar to manage my hours and excel to push out
timesheets, so I wrote a little ruby script that extacts all the
events from a google cal and dumps them to CSV:

I thought someone else here might like it.  Just go to calendar
settings and paste the private "ICAL" link into HOUR_CAL.

require 'open-uri'
require 'date'

HOUR_CAL = ### url goes here

events = []
ical = open(HOUR_CAL)
ical.each_line do |line|
    line.chomp!
    if line =~ /BEGIN:VEVENT/
        events << {}
    elsif line =~ /DT(START|END);TZID=([^:]*):(.*)/
        events.last[$1.downcase] = DateTime.parse($3)
    elsif line =~ /SUMMARY:(.*)/
        events.last['task'] = $1
    end
end

ical.close

puts %("task","date","in","out","hours")
events.each do |e|
    t = e['task'].gsub('"','')
    d = e['start'].strftime('%m/%d/%Y')
    st = e['start'].strftime('%I:%m %p')
    et = e['end'].strftime('%I:%m %p')
    diff = (e['end']-e['start'])*24.0
    puts %("#{t}","#{d}","#{st}","#{et}","#{diff}"\n)
end


- aleks