Using CalDav to bidirectional sync Google Calendar and iCal

Well it isn’t perfect yet. Seems to work great for one calendar that is read/write on Google Calendar and also to have lots of read-only calendars (iCal calls these subscriptions) while read/write calendars are called accounts. (The bigger issue is that iPhone sync with Nuevasync doesn’t seem to work).

There is also much confusion about how it all works. There are three flavors of calendars:

# Your primary calendar. This is home base for Google. Unlike Outlook/Entourage, but like iCal, Google has this notion that you can have multiple calendars (like a home one and a work one. Microsoft on the otherhand, forces everything into a single bucket). Adding this as a read/write calendar involves creating in iCal/Preferences/Accounts a very strange account with user name that is yourid@gmail.com and your Google password, then you type into the Account URL a very bizarre string which is: https://www.google.com/calendar/dav/_insertgmailaccount_@gmail.com/user
# Your secondary calendars. These appear to iCal like completely separate accounts. This is the unfun part because others have pointed out you can’t copy entries from one account to another, but at least you can se them. The process here is identical to that above, but you have to find the so called _calendarid_ which is a unique number. In the current Google Calendar user interface (it changes daily), you click on the little down arrow next to the calendar in question and select Calendar Settings and scroll down to the bottom of the screen and look for Calendar Address:. You then create another account with your google name and password, but you change the funny URL to https://www.google.com/calendar/dav/_calendarid_@groups.calendar.google.com/user
# Your read/write shared calendars. When someone lets you manage and create events on a calendar, the owner is the other person, but it looks to iCal like it is just one of your secondary calendars. This means that if you are doing the administrative work for someone, you can use Google to add appointments and offline you can use iCal. That is pretty cool! The URL is identical to yours, but with their gmail account inserted, so it is https://www.google.com/calendar/dav/_otheraccount_@gmail.com/user
# Your read-only shared calendars. If you have some calendars that are read only, you don’t have to create a separate account for them, instead, use a completely different mechanism which is the Subscribe to Calendar for iCal, this is read-only and in this case, you use a totally different URL from the one above. Choose Calendar/Subscribe from iCal and then go to Google Calendar and in the section called private address, click on the ICAL button, this brings up a gigantic URL that ends in .ics, copy that URL and stuff it into the URL that subscribe needs.

Amazingly, this all seems to work, so iCal and Google Calendar end up being a good replacement for say unrelated groups of people doing scheduling. Means that you can belong to multiple informal groups like your family and share. And also to your work where your admin can look at your work calendar and home too 🙂