Setting Referential Due Dates in OmniFocus

OmniFocus has been my primary task management app for quite a while now. One feature I requested a while back is a setting that allows OmniFocus to have referential Due Date entry based on the task's Defer Date. The idea is if I have a deferred date in the future, say 2015-04-07, and I use the OmniFocus syntax of +2w to set the Due Date in 2 weeks, I don't want my Due Date to be 2 weeks from now, I want my Due Date to be another 2 weeks from the Defer Date. I finally got around to making a Keyboard Maestro macro to have referential Due Dates in OmniFocus.

The KM macro is keyed off of a trigger keystroke of +d2w to set the Due Date in OmniFocus to be 2 weeks from the Defer Date. The macro looks like this:

So now if I set a task to have a deferred date of 2015-04-07, and use the KM macro keystroke of +d2w, the whole process looks like this:

The Applescript in the KM macro is:1

set dateString to the clipboard
set thisDate to date dateString
set deferDate to thisDate + 14 * days
set deferDate to deferDate + 12 * hours
set DueDate to deferDate as string
set the clipboard to DueDate

I have 3 referential due dates macros so far:

I still have my fingers crossed that Omnigroup will have a setting to enable referential dates in future versions of OmniFocus.

  1. I've never claimed to be an Applescript expert.