Defer to Tomorrow
Summary: Changes the Defer Until date of the selected actions to tomorrow.
Requires: OmniFocus Pro 2
Install Location: ~/Library/Scripts/Applications/OmniFocus/
Last Modified: 2019-10-02
Description
This script changes the Defer Until date of the selected actions to midnight tomorrow (if there was no defer date) or the same time 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) + 1)
set time of _date to 0
return _date
end midnightTomorrow