Beeminder Forum

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

#22

I renamed the repo to omniminder and it is now much more likely to be usable by someone else, if anyone wants to give it a whirl. As of right now, it supports:

  • Beeminding size of OmniFocus inbox
  • Beeminding number of projects that are due for a review
  • Beeminding arbitrary daily tasks that match a pattern (somewhat like how Complice supports beeminding arbitrary things)