Tuesday, August 9, 2011

Please add API support for adding non-Google calendar subscriptions!

One of the most exciting new features we've gained from the transition is the ability to easily create, share, and subscribe to different calendars. In fact, upon user account creation, we automatically subscribe users to a few calendars we expect them to find useful. One of those is the academic calendar.


The academic calendar is managed through our intranet portal, so I simply wrote an iCal (.ICS) output URL of it, and that allows users of Google Calendar (or almost any other calendar software) to subscribe to it. Through the API, though, I can't just subscribe users to the calendar's URL. I had to add the calendar personally through the normal web interface first, which then provides the Google Calendar ID necessary for the calendar subscription API.


Since the academic calendar is the same for all users, it's not a big deal. A single hand-performed operation allows for the same calendar to be subscribed to by all of the users on the domain. This has become a problem, though, for one of our other planned features.

One original goal was to have the user's class schedule subscribed to by default upon account creation. Imagine how smooth that is! No need to manually type in each class's start and end times or adjust added/dropped classes yourself. Not only that, but since it's a calendar subscription to an ICS that is dynamically generated from our course registration database, it requires absolutely no user or administrative maintenance. Everything "just works."

Unfortunately, though, Google's API doesn't provide a way to subscribe users to a non-Google ICS URL. The calendar must have a Google Calendar ID, which can only exist if the calendar has been added by a user. While it doesn't completely kill the feature, it's really disappointing to have to walk users through adding this calendar subscription themselves. Sure, it's not that hard, but new students and employees already have a long list of stresses and things to worry about. On a practical level, the end result is more likely to just be that most users don't bother adding it and miss out on the functionality.

I was quite disappointed to discover this, but I'm still hoping that this ability is added to the API.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.