Google Calender: Display Only Public Events -- EASIER WAY

The inner-workings of my mind are quite the imbroglio, which often causes it to make things more difficult than they have to be. Take my previous post, which showed how to make a feed of public events from a google calendar: useful if what you really want is an RSS feed of public events, but if what you actually need is another dynamic calendar that contains said events and updates with changes, here's a much easier solution:
  1. Create a second calendar for just the public events
  2. Invite that calendar (using the calendar ID address found under Calendar Details) to every public event.
  3. Accept invitations.
Voila. Much easier. Though, I still suggest checking out Yahoo Pipes for filtering and mashing up RSS feeds; it is an awesome tool.


Google Calendar: Display Only Public Events

UPDATE: See a much easier solution in my next post, Google Calender: Display Only Public Events -- EASIER WAY.

I share my work calendar - showing only the free/busy details - with everyone in my district’s domain and also the public.  This way people can see if I’m busy before requesting a meeting, but the specific details of my schedule are kept private. What’s nice is that I can select individual events to be public and show all event details, which is useful for group events such as trainings.  In ordered to keep staff apprised of upcoming events, I wanted to create a feed on my website that showed just these public events, i.e. I didn’t want to display my entire agenda of “Busy” events. However, Google does not provide a way to filter a calendar before embedding it, so I needed to create a separate calendar of just my public events. Faced with having to update events on both my default calendar the public events calendar*, I turned to Yahoo Pipes to make a public events calendar that was automatically updated with any event I marked as a public on my default calendar.
Public Event Pipe
fig. 1 Public Events Pipe
Yahoo Pipes is a service that enables users to mashup, filter, and otherwise mess with various feeds; it is a very simple tool, but yet very extensible. My pipe takes a calendar’s iCal address and filters out all private events; the resulting iCal feed can then be subscribed to from Google Calendar. Once subscribed to this custom feed, the calendar will update with any new public events or changes made to existing events. There is a delay in updates, but it is better than having to add/update events in two places. I then embedded the Public Events calendar in my site, using Google’s built-in embed helper.
I published my pipe so that anyone can input their own calendar’s iCal address to create a feed containing only their public events, without actually having to recreate their own pipe. Geeks looking to see how it works should see fig. 1, which shows the source along with annotations, or click ‘Edit Source’ on the pipes main page, to see a live example of the source and play around with a copy of it. Below is the resulting calendar widget, for complete instructions on creating a one of your own, see my tutorial Google Calendar: Public Events Feed.

*When a coworker adds my calendar to theirs or checks my availability when creating an event, Google will only show my default calendar, so it’s important that I keep all events on my default calendar.