There are already some documented methods on how to access your Google Calendar with KOrganizer.
In case you really want to have a (almost fully working) 2 way sync, you may check out the solution using the GCALDaemon that is described here. The GCalDaemon is a server that runs locally on your system that serves as a kind of proxy to Google Calendar. However it's major drawback is that it is written in Java. Thus you need to have a JVM running all the time just to be able to access the server. Well, I don't want to waste these resources on my Laptop.
Another possibility is to simply access the ICal address using a remote calendar directly. Well, this has the drawback that you can just access the calendar read-only. But for me a read-only access is OK. Google Calendar provides a nice web UI to enter events so I am fine with that restriction. I am more interested in getting Reminders for my events as I tend to forget the time while I am working.
But both solutions mentioned above have a major drawback: They only work while you are connected to the Internet. There are so many occassions, when I just wanted to check my calendar when I don't have an internet access like on the hallway when I just would like to see where the next meeting is located. So for me it's more important to have a calendar synchronization that syncs with offline data. But the solution is simple and may work not only with just KOrganizer, but with every application that works with ICS files. So here it is:
First we have to get the URL to the ICal resource. Open Google Calendar and go to the Settings of the calendar you wish to share. On the bottom of the tab Calendar Details you can find the addresses. We will need the private address of the ICal resource, so click on the bottom green ICAL button and a pop up will show you the URL.
The URL will look like http://www.google.com/calendar/ical/<Long Funny IDs>/basic.ics
Next we setup a little shell script that downloads this URL to your local file system using wget and moves the file to the desired location.
#!/bin/sh
TARGET_FILE="/home/cschlipf/data/korganizer/google.ics"
ICAL_URL="http://www.google.com/calendar/ical/[...]/basic.ics"
cd /tmp
if wget -nd $ICAL_URL -o updategcal.log
then
mv basic.ics $TARGET_FILE
fi
Save this script in a file (e.g. updategcal) and make it executable:
chmod +x updategcal
Run this script for the first time. You should not see any output, but you can see the result of the wget command in /tmp/updategcal.log to verify what has been downloaded. The target file should have been created.
Next we configure a new local calendar resource in KOrganizer. On the bottom left you can see the Calendar pane (if you don't see that pane select Settings -> Sidebar -> Show Resource View). Click on the + icon and select 'Calendar in Local File'. Give the calendar a name and select the file at the target location you have entered in the script above.
Make sure to check the Read-only checkbox. After all it does not make sense to edit the calendar as it will be overwritten with the next update and local changes will never be synced back to the Google Calendar.
The last thing that is left to do is to trigger the execution of this script at a regular time interval. I have chosen to update my calendar every 15 minutes. So run the command crontab -e to open the crontab editor and enter a line similar to this (depending on where you have saved the script).
That's it. Your calendar will be updated every 15 minutes as long as there is a connection to the internet. When Google Calendar is unavailable the wget command will fail and you will still have access to the last updated calendar.
I'm really looking for read and write capability, but this is such a smart technique I might settle anyway!
I do really wish the Lightning folks would patch to work with Thunderbird 3 beta 2....