Tech help beeminding OmniFocus


#21

I’ve just started trying to Beemind my own OmniFocus usage and I think I’ve got a good basic approach sorted out:

  • Use Hazel to trigger sending datapoints when OmniFocus syncs.
  • Use JavaScript for Applications (JXA) to avoid the monstrosity of AppleScript.
  • Use Node and the osa2 module to wrap JXA calls with a more general programming environment.

So far, the only thing I’ve got automated is my inbox count, but I also intend to add some support to beemind-arbitrary-things (i.e. did I check off a task containing the words “gratitude journal”). You can see the work-in-progress at dehowell/beeminding-omnifocus.

This is the Hazel rule I’m using to trigger the script:

That rule runs in the folder ~/Library/Containers/com.omnigroup.OmniFocus3/Data/Library/Application Support. Note that I am using the OmniFocus 3 beta, so YMMV if you are using OmniFocus 2. Either way, you’ll need the Pro version for AppleScript support.

JXA can do almost everything AppleScript can do, but with JavaScript. Some things still look magical and weird, but getting the inbox count is at least straightforward:

Application("OmniFocus").defaultDocument.inboxTasks().length