Scripting OmniFocus and Harvest

One-click Timer Start

Both Harvest and OmniFocus are on my Favorites 2014 list. Being two of my most-used applications I wanted a way to link them together, reducing the friction on starting timers even further.

I’ve put this project on GitHub as OFStartHarvest. Instructions are relatively sparse and knowing AppleScript is required to fully take advantage of that. I have some ideas about mitigating that requirement in the future, offering configuration-based patterns for selecting the correct project or task.

Here’s a non-toolbar demo (created for the project).

This project is equal parts necessity (saves me time) and experimentation (automation with AppleScript). In no particular order, thoughts that came of this:

  1. AppleScript is a strange language to write. I’m more use to dot-notation syntax and symbol based operators. AppleScript eschews that in favor of more English words. The “easy to read, hard to write” reputation is deserved.
  2. I wonder about how long this kind of scripting will last. Obviously here it’s extremely useful. Tying two completely separate applications together with zero changes to either is evidence of the power system-level scripting provides. This power, however, has not made it into iOS. Workflow is probably the closest thing to this kind of inter-application scripting but all the actions are canned inside the app.1
  3. The accessibility API in OSX make it possible to control a lot programatically. In this project, rather than make API calls I was able to send keystrokes directly to Harvest greatly reducing the overhead required to integration.
  4. AppleScript integration with Harvest would obviously be nice here.

  1. I’m aware of Pythonista but haven’t given it a complete review just yet. ↩︎

written May 2nd, 2015

May 2015

Can’t find what you’re looking for? Try hitting the home page or viewing all archives.