Screen Shot 2013-02-25 at 9.16.20 AMI volunteer and provide technical support for a few non-profits, one of which is the Project Management Institute San Francisco Bay Area Chapter (http://www.pmi-sfbac.org) where I serve as the VP of Operations and CGO.

One of the moves I made in my first year with them was to migrate our event calendar to Eventbrite and Meetup. One of the gaps I found with Eventbrite is that it doesn’t have a way to provide a feed of events that can be used to update an external calendar, so I embarked on a little programming effort to create one.

Most calendar programs allow you to pull external events using the iCalendar (ics) format, and Eventbrite actually has a pretty decent API to allow you to pull the events, so I decided to write a simple PHP script to allow me generate an iCalendar feed.

Screen Shot 2013-02-25 at 8.47.53 AMThis started as a simple one-off for PMI-SFBAC, but has turned into an open source project at https://code.google.com/p/eventbrite-ics/

Looking at the code, you can see it’s pretty basic, just a few PHP classes, some unit tests, Netbeans project and data.

Once the code was working, I used the iCalendar validator at http://severinghaus.org/projects/icv/ to make sure the results are good, and (at least for PMI-SFBAC) they are.

Eventually this results in a URL that I used as a feed into the All-in-One Calendar from Time.ly which lets me show events on my site’s calendar along with any other iCalendar feeds I choose to add.

Screen Shot 2013-02-25 at 8.59.20 AMTo configure the All-in-One calendar, I just go to the Events in the WordPress admin panel, and add the feed.

After I add the feed I click the “Refresh” button to make sure the events show up on my calendar immediately. The events then get updated on a periodic basis (daily by default), and should keep you up to date.

Screen Shot 2013-02-25 at 9.06.58 AMAnother use I put this feed to is to add the Eventbrite calendar to my Google Calendar.  I have a calendar feed from Meetup, and several of my friends so that I can quickly see what is going on that day.

The same basic idea for Google Calendar: you go to your Google Calendar, click the drop down on “Other Calendars” and choose “Add by URL”.

This gives you a nice view of events so that when you are scheduling things you can see what’s coming up that you might be interested in.

For those of you poor souls still using Outlook, the same feed can be used there as well see: http://office.microsoft.com/en-us/outlook-help/view-and-subscribe-to-internet-calendars-HA010167325.aspx

 

 

Enhanced by Zemanta

I got an email from Microsoft today (Office Insider) that included an article about how to add a calendar to Outlook that would give you the March Madness schedule in Outlook as an example of publicly shared calendars.

Publicly shared calendars are nothing new, they’ve been around for years: Apple created the webcal URI to access iCalendar files using WebDAV (over HTTP) for iCal.

So I figured Microsoft probably wouldn’t have reinvented the wheel here and tried clicking the link in the article to see if it would fire up iCal.

webcals dialog box

Turns out that the URI in the link was very slightly different than a standard iCalendar, so instead of the normal “webcal://” it starts with “webcals://”, which interestingly enough tried to fire up Outlook (in my Windows virtual machine).

Luckily this URI isn’t yet associated with a particular app, so I was able to click on the “Choose an Application” button and pick the iCal application.

Once iCal is chosen, the dialog box shows both Microsoft Outlook and iCal:after choosing iCal

After choosing the iCal application, and clicking “OK”, iCal fires up with a dialog asking you to enter the URL of the calendar you wish to subscribe to, with the URI from the web page showing:

iCal URL entry

Now clicking “Subscribe” of course doesn’t work, since iCal has no idea what to do with “webcals” as a URL.

So to fix this, you have to modify the URI to be either “webcal://” or “http://”  (turns out “https://” works as well).

So even though the URI is not quite the standard webcal one, it is possible to open as a web calendar with iCal, and the same trick works for Google Calendar. Just copy the URI from the link in the page (webcals://calendars.office.microsoft.com/pubcalstorage/9rc05lhz2204226/2011_NCAA_March_Madness_Calendar_Calendar.ics) by right clicking and copying the link:

copy link location

Going to my Google calendar, I then click the little “Add” button at the bottom of the “Other Calendars” area, and choose “Add by URL”.

This brings up the dialog box that lets me add the calendar, and I paste in the URL I copied before, and just edit the first part to be “https”:Add Calendar by URL

Since it’s already a public calendar, I didn’t check that box, although I’m thinking that makes it a public calendar on Google, which might make it easy to find with Google.  At any rate, now the calendar shows up for me both on iCal and Google (obviously it would work in Outlook as well had I followed the original link).

Google calendar with March MadnessiCal with March Madness