Google Calendar to Palm Desktop conversion

(The short story is: if you want to convert Google Calendar iCal v2 files to vCal v1 files for import into your Palm Desktop, use this web application I made last night. Please leave a comment on this posting if you use it!

If you’re interested in recent changes to the application, see the dynamic changelog on Google Code.)

It’s amazing how just when you really do need to put all your time into some deadline, you find the perfect WAB, better known as Work Avoidance Behaviour.

In any case, last night I was planning to work on two proposals with rapidly approaching deadlines, instead I somehow was convinced that it should be easy to import some of those neat iCal v2 files available on the web (for example as exported from Google Calendar) into my trusty Palm Desktop 4.1, which I use on my laptop to manage my life and synchronise with my Palm Tungsten C.

It turns out that this is far more complicated than necessary. Google Calendar only outputs iCal version 2, Palm Desktop, even the latest version, only imports vCalendar version 1. There are a number of websites that state that simply renaming the .ics file to .vcs, and changing the version tag to 1.0 does the trick. WRONG. Google Calendar iCal files actually use iCal version 2.0 features, so this idiot workaround does not, well, work around.

By now it was almost time for bed, and I’d tried Sunbird (exports ical v2), Evolution (the windows version is the worst POS software I’ve ever come across) and bunches of other things. No go. Finally I stumbled on by Mark Bucciarelli. This almost worked, except for a few bugs (empty field handling, a.o.) which I fixed, and the fact that it doesn’t handle RRULEs at all. After reading the vcal standard, I implemented a really ugly RRULE transformation that seems to do the trick, mostly.

I’ve packaged all of this ugliness in a simple CGI that you can now use to convert Google Calendar iCal version 2.0 files to vCal version 1.0 files for consumption by your Palm Desktop. Use this entirely at your own risk of course, but let me know in a comment on this post (see below) if it works, or if it doesn’t.

Click here to convert!

(if you’re interested in the patch source, go to the ical2vcal site on googlecode.)

243 thoughts on “Google Calendar to Palm Desktop conversion”

  1. Worked first time, but only copied a single event — even though there were more in the file (every file I’ve converted comes to just under 5 kb. Some tries converted to ics and some to vcs. Don’t know why.

    Part of my prob. is unfamiliarity with GCAL and how to select events, days, months to offload. I’d like to be able to copy whole months.

  2. Hello, Charl – thanks for leaving up this converter. I’m flipping back and forth between a Palm planner and an Android phone … the latter just doesn’t work well for me. Your converter made for an easy transition back to my Palm calendar. Thanks!!

    For others, my process was
    1) export all as ical from Google Calendar
    2) convert ical to vcs using cpbotha’s cgi script
    3) import vcs into Palm Desktop 4.1.4
    4) sync

  3. As someone who hasn’t found a good replacement for his Palm (& Palm desktop!), your utility is extremely useful. Just used it to get the FCUM home fixtures into my Z22.

  4. You are a life saver. Our institution is moving away from Oracle calendar to Google. I can sync Oracle but not Google. With your utility, my trusty old Palm Zire 71 has had its life extended.

    (Hope this little site stays up for a while!)

  5. This is a great tool. Is there any change that a windows version might be available rather than the web tool? I have only intermitent access to web from my location (Afghanistan).


    1. Thank you very much for the compliment!

      If you have Python on your machine and a bit of time, you could use the Python source code directly to convert your calendar files.

      At the Python prompt in the same directory as the downloaded do:

      import vcal
      inputfile = open('yourfilename')
      cal = vcal.parse(
      outputfile = open('outputfilename', 'w')

      This is from the top of my head. :)

  6. Thanks much for creating & sharing the calendar conversion script. It is a big help. It did not work perfectly for my needs, but that is likely due to my source format than the converter.
    I wanted to convert my exported calendar from Kopi (a Konqueror calendar off-shoot). My file is 2,600 kb, covering multiple years.
    The web CGI interface replied with a network time-out first try, and an error from the CGI script the second: “Error parsing your upload: mktime argument out of range”. I suspect that my file was too big for the script to finish within the time limits given by the web server for a reply.
    So I downloaded the Python as suggested on October 16, 2011 at 10:09. This worked well. However, on my system the Python commands needed to be a little different. Pretty good though, since you were going from memory.
    I did (with the multiple errors figuring it out removed):
    $ python
    Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48)
    [GCC 4.4.5] on linux2
    Type “help”, “copyright”, “credits” or “license” for more information.
    >>> import vcal
    >>> inputfile = open(‘yourfilename.ics’)
    >>> cal = vcal.parse(inputfile)
    >>> outputfile = open(‘myoutputfilename.vcs’,’w’)
    >>> outputfile.write(cal.as_vcal())
    >>> quit()

    This got the data able to be imported to Palm Desktop without any reported errors. Very nice.
    The result was many more events than expected. Many having a daily repetition with an end date of 12/30/2031 in Palm Desktop. These events had a repetition end date in the past in the original data, but probably in a non-standard format.
    This should be much easier to clean up to a usable state than having no data in my palm at all. Much thanks!

  7. Thank you so much for this application. In these days of a slow economy and spouses being out of work – mine being one – it is so nice to be able to save money and still remain on time for my appointments.

  8. tried this to convert Yahoo cal .ics to Palm desktop v6.2.2; with partial success… dates are ok, as is repeating– times are screwed up and titles are ALL just “Reminder”… d’oh (that will teach me to back-up before trying crap like this, i spose)

  9. Solves my problem of easily adding appointments to Palm Desktop from Thunderbird’s Lightning. Thanks for a good program.

  10. Many thanks. It worked a treat. I had exported from Palm 4.1.4 using Dimex as an Ical file. Then accidentally deleted entire calendar on Palm. Have now used your program to convert to vcs and imported it back to Palm.

  11. Till 4 months ago I worked with a Palm. Now id died, so I had to go to the Android-Land. Heavy! Deja-Office made it possible to save all my data to the new equipment and to work in the new World in old environments. On my desktop-computer Palm-desktop is still at work syncing. Your programm helped me in converting actual holyday-date to the android-world. Thanx.

  12. Any chance you’ve reverse engineered this to do a vcs to ics conversion? I need to move my Dad off his ancient Palm to an Android device that syncs with Google Calendar. I was able to pull the calendar off his Palm in vcs format but they don’t import correctly to modern calendars because the RRUL for repeating entries uses the vcs 1.0 format instead of the ics 2.0 format.

    Any suggestions you can make about how to import these vcs files and retain the repeating entries would be most appreciated.


    – Niz

  13. Very cool, thank you! You have saved me, as you have saved so many others. I’ve gone to a fair bit of effort to keep using my Palm, & I just started a consulting job where everybody uses iCal – I’ve been out of the work force for a while so I don’t know how ubiquitous it is. I am using Palm Desktop v. 6.2.2 on a 64-bit Windows 7 machine. Your converter worked, except it did not manage the 3-hour time difference between US East Coast (where I am) & US West Coast (where the appt. with which I tested your converter was made). iCal automatically scheduled the appt. at the correct time for me, but when I used your converter, the appt. was set for 3 hours earlier, so people in differing time zones, be aware.

    PLEASE don’t take your converter down!

  14. Yesterday I posted a comment that your converter didn’t seem to translate time zones well. I retract that; I think it was I who wasn’t dealing with time zones well! (I imported an 11 am West Coast meeting from iCal; my E. coast palm pilot read it as 8 am, but I’ll be actually attending the meeting at 11 because I’m going to the West coast . . . but if I were conferencing in from the E. coast it would actually be 2 pm east coast time . . . never mind . . . my head is exploding . . .

  15. Worked perfectly! Thanks so much!

    Now if I can just get my addresses and memos from my old Palm. Unfortunately I can’t get my (newer and more reliable) Tungsten C to sync with the info on my Palm Desktop I used with my Tungsten E2. Not sure why.

  16. Worked for me… (single appointment).
    But I noticed that the web interface could/should be a little more streamlined: accept an URL to the iCal file also, and directly start the download after posting the form. This way, importing an iCal into Palm Desktop adds “only” three mouse clicks.
    Whoever converts the web tool access into a context menu extension for e.g. firefox might even finish on par.

  17. I used it and it sorta worked. I had several repeating events that ended over a year ago that clobber over today and all future days too.

    And now I’m deleting my SgCalendarCn.dll file to see if that will get rid of all my events (I’m going to try re-importing).

    1. Well, that didn’t work… I’m going to have to try re-installing Palm Desktop, but meanwhile, I tried re-exporting my Google Calendar and then converting it again with your CGI converter, and now it is just going to a blank page when I click the “Convert to VCAL” button.

      Oh no, did I break it? :(

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.