Danny Lesandrini explains vCalendar
What is vCalendar
I recently posted some VB Script code that exploits the MS Outlook object model to
create an Outlook Appointment Item in a Public Folder. I received several replies
from programmers who downloaded the code, but had trouble getting it to work in an
ASP page. It seems that it’s not possible to set an object to the MAPI Namespace from
VB Script in an ASP page. The following code returned the error, “Server unable to
create object” …
Set objOutlook = CreateObject("Outlook.Application") Set objNamespace = objOutlook.GetNameSpace("MAPI")
Since we couldn’t get around this seeming limitation of Outlook on IIS, I decided to
pursue a different solution– vCalendar.
vCalendar defines a transport and platform-independent format for
exchanging calendaring and scheduling information in an easy, automated,
and consistent manner. It captures information about event and “to-do”
items that are normally used by applications such as a personal information
managers (PIMs) and group schedulers. Programs that use vCalendar can
exchange important data about events so that you can schedule meetings with
anyone who has a vCalendar-aware program.
Beginning in December, 1996, the Internet
Mail Consortium took on responsibility for the development and promotion
of this important technology.
A vCalendar record is just a text file. If you do not have an automated facility
to process vCalendar records, you can open them with a text editor and use the
information. The content of a vCalendar file will vary with the information inserted
by the file creator. The format we will use from our custom VB DLL looks like the
following in a text editor:
BEGIN:VCALENDAR VERSION:1.0 BEGIN: VEVENT DTStart:20001122T153000Z DTEnd:20001122T210000Z LOCATION;ENCODING=QUOTED-PRINTABLE:The Batcave SUMMARY;ENCODING=QUOTED-PRINTABLE:Weekly Meeting with Alfred DESCRIPTION;ENCODING=QUOTED-PRINTABLE:Discuss Batmobile Maintenance ... UID:20000922T07000020000922T070000 PRIORITY:3 End:VEVENT End:VCALENDAR
The above format omits some information specific to MS Outlook. This was done to
make the file more compatible with non-Microsoft PIMs, which may be accessing the
our vCalendar-enabled web page. To create a vCalendar file in MS Outlook format,
follow these steps:
1) In a Calendar folder, click to select an appointment for which you want a vCalendar file. 2) On the File menu, click Save As. 3) In the "Save file as type" list, click to select vCalendar Format (*.vcs). 4) In the Save In list, select the folder where you want to save the vCalendar file, and then click Save.
NOTE: the DTSTART and DTEND entries above are a combination of the date and time
in the format, YYYYMMDDThhmmssZ, where YYYY=year, MM=month, DD=day of the month,
T=start time character, hh=hour, mm=minutes, ss=seconds, Z=end character. This
string expresses the time as Greenwich Mean Time (GMT), on a 24-hour clock so must
be adjusted to your time zone.
For example, if you are in the Mountain Time zone as I am, your time is 7 hours behind GMT.
So, you would subtract 7 hours from the start and end times in the vCalender text to derive the
correct time range for the appointment. In the appointment above the start time would be
153000-070000. Notice that a 24-hour clock is used and times are converted from A.M/P.M
to military time.
Well, that’s it for vCalendar. Now we’ll look at how we can create a custom VB Class to
handle the string parsing and vCalendar file creation. Then, the whole thing can come
together in an ASP page which invokes the method to create the vCal file and the executes
the VB Script necessary to insert our appointment in the Web User’s Outlook Calendar.