Defer 2 Days
Summary: Changes the Defer Until date of the selected actions to 2 days in the future.
Requires: OmniFocus Pro
Install Location: ~/Library/Scripts/Applications/OmniFocus/
Last Modified: 2026-01-14
Description
This script changes the Defer Until date of the selected actions to midnight the day after tomorrow (if there was no defer date) or the same time the day after tomorrow (if there was already a defer date).
Installation Instructions · Download in Compiled Format · Download in Text Format
Script
on run {}
repeat with _action in my selectedActions()
my processAction(_action)
end repeat
end run
on selectedActions()
tell application "OmniFocus"
return my filterValues(my selectedValues(), {inbox task, task, available task, remaining task})
end tell
end selectedActions
on selectedValues()
tell application "OmniFocus"
return value of selected trees of content of first document window of front document
end tell
end selectedValues
on filterValues(_values, _classes)
tell application "OmniFocus"
set _result to {}
repeat with _value in _values
if _classes contains _value's class then
copy _value to end of _result
end if
end repeat
return _result
end tell
end filterValues
on processAction(_action)
tell application "OmniFocus"
set _action's defer date to my calculateDate(_action's defer date)
end tell
end processAction
on calculateDate(_oldDate)
if _oldDate is missing value then
return my midnightTomorrow()
else
return (my midnightTomorrow()) + (time of _oldDate)
end if
end calculateDate
on midnightTomorrow()
set _date to current date
set day of _date to ((_date's day) + 2)
set time of _date to 0
return _date
end midnightTomorrow