Quote:
Originally Posted by Greg Jones
There's no way to customize the number of due soon days beyond what is available in the Preferences, but you can always submit a feature request for this to the Ninjas.
|
Well, good advice I think, but experiment has a way of revealing a slightly more complex picture than we expect :-)
Here I have my 'Due Soon' interval set to 11 days:
It does confuse the preferences dialog (which doesn't immediately update, and then displays a blank after OmniFocus has quit and reopened, if the setting is outside the range that the dialog knows about):
Otherwise due soon intervals beyond 7 days do appear to work well
as long as you are only using OmniFocus for Mac.
The problem seems to arise in syncing with iOS devices. I am finding that even if I have the interval set to 11 days on the Mac, only the next five days are flagged as Due Soon on a synced iPhone.
Depending on how you define a bug, perhaps this could be called one - the Applescript interface allows the setting of arbitrary Due Soon Intervals, but the resulting settings fail to sync ...
Anyway, FWIW here is the code of a script which will allow you to specifiy longer (and fractional) settings for "Due Soon is in the next N days", but only on the Mac version of OF.
[UPDATE: subsequent discussion in this thread suggests that syncing to other devices works fine as long as you quit and restart OmniFocus after a scripted change to the DueSoonInterval setting - the script has been updated both below and in the zip, so that it now explains this, and offers to quit and restart OmniFocus for you.
In short, it does already seem to be possible to have a Due Soon interval longer than 7 days, and to work with this setting across different devices]
Code:
property pVer : "0.2"
property pTitle : "Experiment with Setting Due Soon Interval" & tab & pVer
-- NOTE THAT ANY SETTING MADE WITH THIS SCRIPT WILL NOT:
-- 1. BE REFLECTED IN THE OF PREFERENCES DIALOG
-- 2. BE SYNCED TO OTHER DEVICES
-- UNTIL OMNIFOCUS HAS QUIT AND BEEN RESTARTED
-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-- IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-- ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-- GET THE EXISTING DUE SOON INTERVAL SETTING
tell application id "com.omnigroup.omnifocus"
tell default document
set refSetting to a reference to setting id "DueSoonInterval"
set strCurrentDays to ((value of refSetting) / days) as string
end tell
end tell
-- INVITE THE USER TO CHOOSE A NEW NUMBER OF DAYS
set blnSet to false
repeat while blnSet is false
set varDays to display dialog "Enter number of days" default answer strCurrentDays with title pTitle
try
set rDays to ((text returned of varDays) as real)
set blnSet to true
on error strMsg
display dialog strMsg buttons {"OK"} with title pTitle
end try
end repeat
-- APPLY THE NEW SETTING AND REPORT THE RESULT
tell application id "com.omnigroup.omnifocus"
tell default document
set refSetting to a reference to setting id "DueSoonInterval"
set (value of refSetting) to (rDays * days as real)
set rSetting to (value of (setting id "DueSoonInterval"))
end tell
end tell
set varResponse to display dialog ("New setting: " & (rSetting / days) as string) & " days
NOTE: The new setting will not sync correctly,
or be updated in the Preferences dialog,
until you have quit and restarted OmniFocus" buttons {"Esc", "Quit & restart Omnifocus"} cancel button "Esc" with title pTitle
-- IF REQUESTED BY USER, QUIT AND RESTART OMNIFOCUS
tell application id "com.omnigroup.omnifocus" to quit
tell application id "com.apple.systemevents"
repeat with i from 1 to 10
set lngApp to count of (application processes where name = "OmniFocus")
if lngApp < 1 then exit repeat
do shell script ("sleep 1")
end repeat
end tell
if lngApp < 1 then do shell script "open -a OmniFocus"