Saturday, April 09, 2011

Adding events to Google Calendar: generating quick add statements

Some parts of Google Calendar are pretty cool. Event import ain't one of 'em. I've gotten CSV import to work, but it's more than ugly. It's dumb [4]. Worst of all, if you make a mistake you can hose your calendar. There's event undo, but not import undo [1].

So when I had to enter 15 games from my son's calendar, I tried typing them in. That got tedious fast. I'm no good at data entry; I get bored. I make too many mistakes.

Instead I tried a middle-ground that worked pretty well. I dumped the event list into Numbers.app [2], then I wrote a simple Concatenate function [3] to construct Quick Add friendly statements like:

Baseball: LINWOOD MONROE - HIGHLAND PARK at HIGHLAND PARK on May 17, 2011 at 4:15 PM for 2 hours

I then pasted the statements into Quick Add one after the other [4]. Unfortunately Quick Add doesn't allow one to specify a target calendar, so they all went into my personal calendar. I had to do a search on "Baseball: " to find them all, then edit each one to move it to the shared family calendar. Even with that quirk it was relatively painless to enter data this way.

Which says something about how bad CSV import is!

[1] I though I'd read that Google was introducing a rollback option for calendars, but I can't find it. Must have been my imagination. 
[2] I bought it on the app store for a pittance, and I'm getting quite fond of it.  The font display is surprisingly bad, but that's not unusual in OS X (Mac Classic fonts were better, and Win 7 is best). Where it bests Excel is layout -- you can put as many table/spreadsheets on the work surface as you want.
[3] This doesn't work very well in Excel. In Excel a reference to date produces a date serial number in Concatenate. I believe this is a defect, and it's probably as old as time. I'm glad Numbers.app goes its own way. The function looked like this: =CONCATENATE("Baseball: ",E3," at ",F3," on ", C3 ," at ",D3," for 2 hours")
[4] A smart import function would use quick add style NLP to process any number of lines into events, then it would allow a user to correct the list, then it would import. With an undo option of course.

No comments: