So, everyone knows that SharePoint has a calendar list type that is defined and ready to use, out of the box. Hopefully you know that with Microsoft Office Outlook 2003 and 2007, you can read the SharePoint calendar from Outlook. And with Outlook 2007, you have full, two-way synch and offline access to SharePoint calendars, giving you a true “group calendar” functionality that can replace other tools including Microsoft Exchange public calendars. If you’re not up to speed with the things I’ve mentioned so far, check out the information on the Microsoft Office Online site.
What if, however, you want users to be able to add items from a SharePoint calendar directly to their calendar, without having to subscribe to the entire SharePoint calendar? Having access to a SharePoint calendar using the web interface of the SharePoint site, or using the Outlook rich client, is great, but that doesn’t get items onto your smartphone or PDA. I know that I visit sites that allow me to export events to Outlook using the iCalendar format. How can that be done with SharePoint? One of my colleagues asked me that recently and the answer turned out, in some situations, to be much easier than expected. It’s already built in to SharePoint! Because I do tend to use Outlook to access my own SharePoint calendars, I’d never noticed! If you open a calendar item in the “view item” mode, there’s an Export Event button right there! Click it, and an .ics file opens. Ain’t that easy?
Unfortunately, SharePoint does a lousy (read: incorrect and useless) job of exporting recurring events, so it’s possible to use only for non-recurring events. But if that’s what you need, that’s a great start. The other problem is that the Export Event command is buried in the single item view. What if you want it more exposed? You can add a field to the calendar list that allows you to show the “Export to Outlook” function as part of the list itself.
- Open the list Settings page.
- Click Add Column.
- Enter a name (I used iCAL as the column name for this example).
- Choose a Calculated column type.
- Enter the following formula: ="http:// sharepoint.intelliem.com/sites/test/_vti_bin/owssvr.dll?CS=109&Cmd=Display&List=ListID&CacheControl=1&ID="&ID&"&Using=event.ics"
The ListID is the escaped GUID of the list. You can see the correct ListID on the address bar as you’re adding the column.
Now, you can expose the calendar in a list view (rather than a calendar view) and show that column. The column name, description, or other “hints” to the user can explain that the link creates an iCalendar file. The next step would be to create a custom list view, using SharePoint Designer, where you use the value of the field to create a hyperlink with visible text that says something like “Export to Outlook.”
Last but not least, you can roll your own solutions to provide “Export to Outlook” capabilities that can even support recurring events. You can start with this SharePoint Team Blog entry. The blog entry sets up and links to code in the Community Kit for SharePoint that exports events.
Calendar Sharing Gone Wild
As I explored this topic in more depth than I’ve had time to do before, I found that Outlook 2007 has some very cool options for sharing calendars. These go beyond SharePoint, but they are awesome. I plan to implement some of these for closer integration with my clients. For example, my clients often want to know when I’m available for conference calls and meetings—I found an easy way to provide them this information, without being on the same Exchange systems. When you have a chance, check out all the possibilities at the Microsoft Office Online site.