One of my current activities involves sharing the contents of a SharePoint calendar, which is hosted on an Intranet site, with external contacts. An extranet portal would be one possible approach but it’s probably over-engineering the solution and a simple calendar export, updated on a regular basis would also suit the requirement.
SharePoint allows RSS export from a Calendar but the events are exported in the order in which they were added to the calendar, rather than in chronolical order. I thought it would be far more useful to export them in iCalendar format and it turns out that’s possible too – with the addition of an open source webpart called iCal Exporter (which my colleague Andrew Richardson tracked down). You can also interrogate the SharePoint object model directly but that’s beyond my limited coding abilities.
Installing the webpart is pretty straightforward:
- Unzip the compiled version of the iCal Exporter webpart and copy the
iCalExporter.wsp
file to the hard drive on a SharePoint server (I used Windows SharePoint Services 3.0). - From the command prompt, issue the following commands to navigate to the folder containing
stsadm.exe
, install the solution and deploy the solution:
cd “%commonprogramfiles%\Microsoft Shared\Web Server Extensions\12\binâ€
(it may be necessary to specify other options if deploying in a multi-server environments.)
stsadm –o addsolution –filename “c:\iCalExporter.wspâ€
stsadm –o deploysolution –name iCalExporter.wsp –local - Using a web browser, navigate to the server’s site collection features page and click the Activate button on the iCalendar export button feature.
Once installed, there is an additional option on the Actions menu export the calendar in iCalendar format. Give the resulting file an .ics
extension and distribute it at will – most calendar clients (I tested in Outlook but it should work for others too) will be able to view the appointment details.
Hi Mark,
I downloaded the exporter and it works fine. However, is there a way of scheduling it so it runs on a daily basis?
Regards
Tony
Hi Tony, I guess it should be possible to do but I’m afraid I don’t know how. Sorry. Mark
Do you know of anything like this that could be used to export individual calendar items at .ics files? I’ve been searching around and not finding much on that…
Sorry Chad, I don’t know. I guess you could connect Oitlook to a SharePoint Calendar and export individual appointments that way? Mark
If you experience problems with this go to C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS
locate and edit ical.aspx.
Add this after Response.ContentType = “text/calendar”; line:
Response.AppendHeader(“Filename”, “event.ics”);
Response.AppendHeader(“Content-Disposition”, “attachment;filename=event.ics”);
this would allow IE to recognize this file in case if you don’t have outlook installed on your client machine otherwise it will produce an xml type error
Every time I use this, I just get a generic Sharepoint error page:
Unknown Error
Troubleshoot issues with Windows SharePoint Services.
Ugh.
For future reference, the last post about the “Unknown error” is fixed by adding the two lines to ical.aspx mentioned in the post before that.
That problem can occur even if you do have Outlook installed, as I saw it happen with some cals but not others, seemingly randomly, from the same PC. When you do copy and paste the lines, be sure to correct the quotation marks, which are the fancy, curly variety rather than the “straight” ones. I doubt the fancy ones would work.