This is a further update on the script, it launches OmniFocus if it wasn't running already and hides it from view (whether or not it was running). I got help from
here. Ideally the script would leave OmniFocus at whatever window focus it was originally at (or hidden) and close it after if it was not already open. That will have to wait for another day though when I actually understand what to do and not just how to copy and paste :p.
I'm not sure why but it apparently helps telling OF to activate twice (according to the link). It's not as elegant as I would like but it gets the job done :).
Code:
tell application "System Events"
set iSyncIsRunning to (count of (every process whose name is "iSync")) > 0
end tell
tell application "OmniFocus" to activate
tell application "OmniFocus" to activate
tell application "Finder"
set visible of process "OmniFocus" to false
end tell
tell application "iSync"
activate
synchronize
-- wait until sync status != 1 (synchronizing)
repeat while (syncing is true)
end repeat
set syncStatus to sync status
set lastSync to last sync
end tell
tell application "iCal"
set theCalendars to every calendar
repeat with theCalendar in theCalendars
set theTodos to every todo in theCalendar
repeat with theTodo in theTodos
set theTodoSummary to summary of theTodo
tell application "OmniFocus" to tell default document
make new inbox task with properties {name:theTodoSummary}
end tell
delete theTodo
end repeat
end repeat
end tell
if syncStatus = 2 and not iSyncIsRunning then
tell application "iSync" to quit
end if