My knowledge in Applescript is very limited, but I thought I would be able to take this existing line in a script:
set _date to current date
and change it to set _date to the action’s existing defer date instead of the current date, but I get different error messages when I try. Can anyone tell me what the line should look like?
I took a look at that script. I’m not sure you want to edit that line. You’re talking about the line in midnightTomorrow, right? Why would you want to change it?
This script lets me set the defer date to tomorrow, or to a date further into the future if I change the ”+ 1” to a higher number. What I am trying to do is to figure out if I could modify the script to add one or more days to existing future defer dates, but it sounds like I am on the wrong path. I thought it would be easy to take an existing defer date in an action and add a specified number of days to it.
--this is the default time for items deferred to tomorrow, 5am
set myStart to 5
set startTime to (myStart * hours)
set todaysDate to current date
set currentTime to time of todaysDate
--this sets up tomorrow as 5am tomorrow
set tomorrowsDate to todaysDate - currentTime + (1 * days) + startTime
set deferDays to "1"
display dialog "how many days?" default answer deferDays buttons {"Cancel", "OK"} default button 2
set deferDays to (the text returned of the result) as integer
tell application "OmniFocus"
tell front window
set selectedTrees to selected trees of content
set selectedTasks to every item of selectedTrees
-- Set the defer date of each selected task to the startDate
repeat with i from 1 to count of selectedTasks
set theTask to the value of item i of selectedTasks
set currentDefer to defer date of theTask
if todaysDate > currentDefer then
--if a defer date is in the past, defer to tomorrow at myStart
set the defer date of theTask to tomorrowsDate
else
if currentDefer is not missing value then
set currentTime to time of currentDefer --gets the current time of the defer date
set the defer date of theTask to currentDefer - currentTime + startTime + (deferDays * days) --advances the defer date by one day
else
set the defer date of theTask to tomorrowsDate
end if
end if
end repeat
end tell
end tell
Very embarrassing… I hadn’t the time to look at this immediately. Then I forgot it as I started to use Omnifocus differently, with less need for defer dates. Now, eight months later later, I tried this script and liked it. Thank you, @hammer, for taking the time to write it. It seems to work well for tasks with future defer dates (for tasks without defer dates it sets tomorrow as defer date, regardless of what number of days I type in the dialog box). It’s definitely, as you suggested, a start for what I was looking for, and still would find quite useful. From that start I could experiment and hopefully understand enough to make some changes that suit my needs. Thanks.