I have already been using Google to store some of my contacts for syncing using Zindus. So it seemed pretty natural to use Google to store all of my contacts. Using Google means that my information is available on any platform. Google provides a nice sync interface for the iPod touch that works well in an offline mode, so I was happy with it.
Originally I started writing an application in python to convert my Palm contacts to Google. As I got close to having this done I discovered that the Birthday and Anniversary fields couldn’t get populated via the python API from Google (it may work now, but didn’t work then). So I started looking for other options.
It turns out that Google allows you to export your contacts in a CSV format and can import in that CSV format as well. So I entered a few contacts with all of the fields that I wanted and then did an export to see what I got. The CSV file was pretty standard, but had lots of extra columns. So I tried trimming it down and discovered that I actually need to have most of the columns, even if they’re blank, otherwise Google wouldn’t recognize some of the other non-blank columns. This seems kind of odd, but my guess is that Google is looking for some set of column names to determine if it’s a CSV file from Outlook or one from Google.
So now I needed to get my contacts into the Google CSV format. I started by exporting from jpilot and then trying to reorganize the data. This got old real fast. So I wrote another application in C++ using the pilot link library that would output my CSV files. I’ve put this application up on github so that anyone else can use it as well.
After running this application I had a nice CSV file that I was able to import into Google and all of my contacts were now available to my iTouch. I did end up hacking the IM conversion as I didn’t have many contacts with IM information in my Palm. Otherwise the conversion went pretty well.