Dealing with Waiting in OmniFocus

Published on

I’ve been rereading Kourosh Dini’s Creating Flow With OmniFocus and I was thinking about his TextExpander snippets that create task titles like:

(2015-11-19 → CALL) Waiting for response from Ken Case

I wanted to automate the process of creating these tasks—using a little bit of AppleScript—I’ve got the process of taking a task like:

Call Ken Case

…and turned it into this:

(2015-11-19 → CALL) Waiting for response from Ken Case

…with its context set to “Waiting”.

Here’s the script: Convert To Waiting

How to use it?

If your selected tasks are formatted like, Call Ken Case or Email Ken Case, and you run the script with the argument 3, the script will format the title to be like the Waiting for response titles above. The date will be set to three days from now. You can also pass a string like next Monday and it will do as expected. You can also switch to a DROP title by passing something like drop 3 or drop next Monday. It’s a special case. You will need the Chrono, Moment, String and OmniFocus libraries. Check my Github.

So, what about processing all these Waiting tasks when their times come?

I’ve written another script called [Process Waiting For Tasks.js][] that’ll take care of setting them back for you. Just set up the script to run with a Launch Agent once a day and you’re set. The script will run through your Waiting tasks and if any of them have the meta date in their title, it will grab the “CALL” or “EMAIL” tasks and set the context of the tasks to either “Calls” or “Email”. Any “DROP” tasks will be deleted. You’ll need the OmniFocus, String and Moment libraries again.

Updated 2018-01-11: I dropped all the JXA scripts from my own daily use, so I’m linking to Vanilla AppleScript now.