Monday, May 24, 2010

Living in the cloud - Migrating from Mac desktop to Google

When I finally decided to get my Android-based phone, one of my first considerations was how I would sync the data I currently had stored in my desktop Mac applications with the 'droid. I had been relying on iCal and Address Book for some time to keep my contacts and appointments in order, and when I had a Nokia phone, iSync took care of getting it all synced together.

With no desktop sync software available for a Mac/Android combination, I decided that the obvious answer was to migrate everything into Google's cloud. I have been a gMail user for a long time now, but I had never really used the Contacts or Calendar options in anger. In case you're interested, here's how I went about getting my precious data into the right place, ready for pairing with my new phone. Needless to say, all this assumes you've got a Google account!


Firstly - and most importantly - I backed all my existing data up. Of course, Time Machine had been faithfully doing this anyway, but I wanted to be doubly sure that I had a safe, up-to-date copy of everything in case the plan went south. To do this, open up iCal and go to File -> Export -> iCal Archive and choose where to save the file. I decided on the desktop for ease, but you can put it anywhere really. This will back up all your iCal calendars into one easily restorable file.


In Address Book, the process is very similar. Fire it up, and go to File -> Export -> Address Book Archive. Again, this will back everything up into one file.

Save both of those archive files somewhere safe in case the worst happens. You can always get back to square one by importing them back into their respective programs if things don't work out. Once you're happy you're all backed up, the fun can start.

iCal to Google Calendar:

In iCal, your next step is to export each of your calendars - if you've only got one, then you'll only need to do it once. If, like me, you have more than one (one for home, one for work) you'll need to export each one separately. Click on the first calendar in the list on the left of the iCal window, and then go to File -> Export -> Export and select a destination. Repeat for each separate calendar, making sure your file name is different and easily identifiable. Your files will have the suffix .ics on the end.

Then fire up your browser, and go to your Google Calendar - http://www.google.com/calendar/. In the left hand column - under the heading My Calendars - by default, you will just have the one calendar. This is fine if you're only importing one, but if you have more then you will need to create the necessary extras. To do this, click on the little "add" hyperlink, and go about creating the new one. Then, to avoid later confusion, I named my Google calendars as the same things as the ones I was importing - so in my case, I had one called "Home" and one called "Work" to match the .ics files I had exported earlier.

To import your iCal files into Google, the process is quite simple. Click on the "Settings" hyperlink under "My Calendars", and it will take you to a separate settings page where you can see your calendars listed, along with import and export options.


Click on the "Import Calendar" option, and another dialog box appears.



Click browse, navigate to where you saved your .ics file, and then use the dropdown at the bottom to choose which calendar to import into. Repeat for your other calendars as well - choosing a different destination calendar for each of your .ics files. If your calendar is big with a lot of appointments in it, importing might take a while. Just be patient and let it do its thing. Once it has finished, hey presto, you have all your data in your Google Calendars.

Importing Address Book into gMail Contacts

To perform a similar feat with Address Book and Google Contacts, you need to go into Address Book, and choose "Select All" from the "Edit" menu to highlight all of your contacts. Once this is done, go to File -> Export -> Export vCard and a dialog box will ask you where you want to save the resulting file - which will automatically be named "vCards". This is a single file containing all the data from all your contacts, in a form that Google can read.

Then, in your browser, fire up gMail and navigate to the "Contacts" section. Once there, you will see three hyperlinks in the top right hand corner of the window - "Import", "Export" and "Print". Choose "Import" and another dialog will appear.


Choose "Browse" and find your way to where you saved your "vCards" file. Then select "Import" - after a few seconds all your contacts should magically appear, complete with photographs if you used them in Address Book. Success!

These steps, by themselves, will do all you need to to get your calendars and contacts (as well as your gMail) onto your new shiny Android phone. The tight integration between the phone and Google means that you only have to input your username and password once, and then everything syncs up quite seamlessly.

Next steps - if you're interested...

Once your calendars are imported into Google, you can then go about subscribing to your newly-created calendars from inside iCal. This uses CalDAV to allow you to view and edit your Google Calendars from within iCal itself.

The first step is a bit drastic (and you can miss this bit out if it's too scary) and it involves deleting your current, locally-stored, calendars from iCal. This will give you a clean sheet to start from, and it will avoid any duplication problems later on. Right click each of your current calendars and choose delete, and they will disappear. You won't be able to delete all of them though - iCal will force you to keep at least one. No matter, because once you've linked to your Google Calendar, you can then delete that stubborn one that won't go away yet.

To link to your Google calendar, go to the "Preferences" menu for iCal. Then click on the "Accounts" tab, and then the little plus symbol in the bottom left of the dialog box. This will present you with the following:


Keep the "Account type" as automatic, and then input your Google email address and password. Click "Create" and iCal will do the rest. You should see your primary Google Calendar appear in the list on the left of the iCal window.


If you've only got one calendar, then that's it - you're done. However, if you have another one (or more) to link to there are further steps to be carried out.


Head back over to your Google Calendar in your browser. Click the "Settings" link again (the one you used before) and then click the second calendar on your list. This will take you into the detailed settings for this particular calendar. Down at the bottom of this screen, you will see a section called "Calendar Address". This will list a Calendar ID - a random string of numbers and letters, followed by "@group.calendar.google.com". Highlight this whole entry and copy it.


Then you need to paste this calendar ID into the following address: /calendar/dav/yourcalendarIDhere@group.calendar.google.com/user/ - obviously replacing the underlined bit with the ID you copied in the previous step. You can do this in Textedit or something similar. Once you've done it, highlight the whole lot, and copy it all again.


Head back to iCal, and go back to the preferences screen. Click the plus sign on the accounts tab again, but this time, instead of going for the "automatic" option, choose "CalDAV" from the dropdown instead:



Type your normal Google username and password in, and then paste the long address string (that you copied previously) into the "Server address" box. Click "Create", and - if you've done your copying and pasting right - your second calendar will appear in iCal underneath your first. Repeat ad infinitum for as many calendars as you've got. Sorted!


Keeping things synced in Address Book is much, much easier. Go to the "Preferences" dialog, click the "accounts" tab and check the box that says "Syncronize with Google". It'll ask for your username and password, but then that's it. Google and Address Book will stay in sync.


So there you have it. I've still got all my contacts in Address book, and all my appointments in iCal - however, they're now also in my Google account too, meaning that my phone is seamlessly and constantly synced as well.


I'm open to any questions, comments and improvements. Just let me know!

7 comments:

  1. Just like an iPhone ;-)

    ReplyDelete
  2. Yes, well I've been thinking about that Wallace, and I'm not so sure you're entirely right...

    If you add a new contact on your iPhone, it won't appear in your Address Book and Google Contacts until you sync your phone with iTunes will it?

    The minute you add a new contact on an Android phone, it's in Google Contacts too, and then that in turn syncs it to the Mac Address Book - all without a physical connection to the computer.

    Or am I wrong? Let me know.

    ReplyDelete
  3. It will if you're a MobileMe subscriber, and I know you'll say "Yes, but that's a paid-for service", well, you would be correct, however you're not just paying for mobile > desktop sync, there's the 20GB of online storage for one, plus the other benefits.

    And no, I'm not on commission.

    Can you see my avatar?

    ReplyDelete
  4. I could tell from your face during our Skype chat that you didn't believe me, so I duly reassured myself and tested my claims once we'd finished chatting.

    I can 100% confirm that I can add, edit and delete contacts in my Gmail contacts book which then appear in my iPhone contacts book without the need to connect the phone to iTunes. Furthermore, I can do it the other way around as well - from iPhone to Gmail.

    The same is applicable to Calendar entries - which I also have synced with my work based Outlook calendar.

    .....Ever mindful that your brow may remain furrowed on this one I'm quite happy to provide video evidence ;-)

    ReplyDelete
  5. Nope, it's okay - I believe you. But I don't know how it does it. Anyone else care to elaborate?

    ReplyDelete
  6. I'm not a MobileMe subscriber either....as far as I'm aware

    ReplyDelete
  7. Here you go...
    http://www.google.com/support/mobile/bin/answer.py?answer=138740&topic=14252

    ReplyDelete