Dr Fragen in the operating room

iCal – Exchange Time Zone Fix – Chapter 3


I’ve updated the iCal-Invite-Fix script again. This time to allow for adding multiple Exchange servers to the script so that you should only need a single script. The set-up is slightly more complex.
As the image above shows there are now only 2 properties, both of which are lists. These lists work together as an array; which means the order of the list items is crucial.

  • exchange_fragment contains unique fragments of the TZID that the Exchange server sends.
  • ical_tzid contains the tzid info that iCal expects to see.

If you have any problems setting it up let me know. This post has all the info for the script.
Download the iCal-Invite-Fix script.


15 responses to “iCal – Exchange Time Zone Fix – Chapter 3”

  1. Andy Avatar

    I’ve tweaked the script to no longer require the user to input the name of the calendar for canceling events. I’ve modified the text above to reflect this.

  2. Michael Bartz Avatar
    Michael Bartz


    I have tried your script and I still have problems.

    My scenario is that I am sending invitations from my MobileMe account (iCal) to others that are running Outlook/Exchange.

    I get replies from the individuals, but the attachments come in as “windat.dat” files. I installed a product called LetterOpener which converted the *.dat files ti ICS files and then installed your script. These replies still did not update my iCalendar.

    I tried this experiment from a Google account and Google works when Letter Opener is installed.

    Thanks for your great work.

  3. Andy Avatar

    @Michael Bartz,

    I’m not sure what you’re trying to accomplish by adding these replies back to iCal. Do they just tell you who has replied and whether they are coming?

    The script is solely for importing Exchange/Outlook invites, changes or cancellations to invites into iCal, not replies to invites.

    I don’t send out invites from my iCal so I’m not really sure what Google calendar is doing that iCal isn’t. If you could let me know perhaps there’s a way to modify the script to do what you need.

  4. ingolf Avatar

    Hi Andy,
    thx for the great work. Do you know if the script works with ical under Lion?
    thx for your help.

    1. Andy Fragen Avatar
      Andy Fragen

      It should. The script does most of the work rather generically in unix.

  5. Bahi Avatar

    I receive .ics attachments that are Outlook/Exchange invitations, always in GMT/UTC, using Microsoft’s (apparently half-baked) implementation of the iCalendar format. The time zones of the meetings are specified in detail in the .ics attachments (always converted to GMT) but in what appears to be a proprietary format; the time stamps for the beginnings and ends of the meetings do not carry the ‘Z’ suffix for Zulu time. (Invitations received from Google Calendar are also in GMT and do contain the ‘Z’ suffix—with no separate, complex statements for time zone, Outlook-style—and all is well with those in iCal.)

    I’ve tried adding various fragments to your script but can’t seem to come up with a pair of fragments that works. The .ics invitations from Outlook are in GMT (specified as “Greenwich Mean Time/Dublin/Edinburgh/London”) and I am in London but at GMT+1. In Lion, this shows in iCal as “United Kingdom Time” — the problem is that we’re in daylight saving time and that part is now handled by the Mac automatically and I seem unable to specify UTC or GMT without the daylight savings. I could potentially map to an zone immediately to the left but I guess that would break in the winter. (Is that right?) The result is that all invitations are out by an hour — the senders’ times are being converted by their servers to GMT but iCal can’t read time zones or the script is mapping one to the other. Do you have any suggestions? Sorry about the length of this and thanks for your great work.

    1. Andy Fragen Avatar
      Andy Fragen

      Can you email me one of these ics files at andy/at/thefragens/dot/com?

  6. Bahi Avatar

    Thanks, Andy — I’ve sent you something.

  7. Andy Fragen Avatar
    Andy Fragen

    @Bahi – Try this.

    Set exchange_fragment to (GMT) Greenwich Mean Time/Dublin/Edinburgh/London

    Set ical_tzid to Europe/London

  8. Bahi Avatar

    Didn’t work for me, Andy—the event was added by the script but at GMT so it’s one hour out. Thanks for trying, though. There doesn’t seem to be a global list of agreed timezone IDs. It’s puzzling to find the Microsoft invitations being sent without a Zulu suffix.

    1. Andy Fragen Avatar
      Andy Fragen

      It your current time zone at GMT +1 set on your computer? I ask because the script is supposed to set the correct TZID for the Exchange Server, which I thought was GMT+0.

      I can write an adjustment for you to add the ‘Z’ if needed, I’ll have to figure out how to make it an option.

  9. Bahi Avatar

    Thanks for the resource info, Andy. Regarding time zone, the adjustment for daylight saving time here in automatic; the time zone is set to London. The Exchange calendar invitations are also coming from someone in London (currently GMT +1) but the MS system is issuing .ics invitations in GMT, which is obvious to a human reading the contents of an invitation but not obvious to iCal in Lion. I suspect the invitations are coming from someone using an old version of Outlook but for various reasons, I can’t make enquiries. If neither Apple nor Microsoft are in a hurry to fix this, I’d guess that it was a fairly isolated occurrence and probably not worth spending time on—invitations from other systems are coming through okay. Thanks, Andy.

    1. Andy Fragen Avatar
      Andy Fragen

      Bahi, you might try making the setting in ical_tzid to something in GMT+1