I've been tracking an issue with the Calendar Publishing Agent and exporting calendars to Google Calendar. Some faculty want to import calendars into Google Calendar (or MobileMe, but I haven't checked that yet). We automatically populate course schedules into GroupWise in a subcalendar, and it can be easily exported with the publishing agent. The issue is that when we do that, and point Google Calendar at the URL, it only imports the last occurrence of any course event.

After a process of trial and error of removing things from the ICS file (you can export the ICS file, and import it into Google Calendar manually, and it exhibits the same behavior) it turns out the problem is the UID field. Removing it completely allows all course sessions to import successfully, even though each one in fact has a unique UID. As an aside, the .ics file generated does not use a recurrence rule to list the sessions, it has a separate VEVENT for each course session. Theoretically, separate VEVENTS with separate dates and times and separate UIDs should mean that all course sessions get imported, but what seems to be happening is that Google is seeing the events as duplicates and dropping all but the last one.

There is no standard for the format of a UID as far as I can tell, but I can also tell you that Google is using that information in a way that prevents certain sequences of events from not being seen as distinct. Our UIDs are of the form UID:20110121T213642Z_000100194E6@drew.edu, and in each VEVENT entry the timestamp part and the number part after the "_" are different, but Google still doesn't like it. I tried removing the @drew.edu part to see if it was only looking at the last few characters but that's not the issue-there's something else about the format of the UID.

So my question is has anyone else tested this? I've seen a few people online have the same problem but no solution. I can at least tell people to manually export the calendar (from the publishing agent), remove the UID field, and get it to load manually, but that sort of defeats the point. I could figure out how to run it through a filter manually and remove the field but that's kludgy. I don't know if there's a way to adjust the iCal output with configuration either.