Selecting a task and running a script like this, for example, should allow you to set Due Date intervals.
(An unusual blind patch in the Applescript library puts Start Date intervals beyond the reach of script, alas ... combining this with the breaking of repetition dialogs by localisations, repetition does look a bit neglected and in need of repair at the moment ...)
Code:
property pTitle : "Set repetition interval"
property pstrDefault : "unit:week, fixed:true, steps:1"
property pNoRepn : "No repetition"
tell application id "OFOC"
tell front document window of front document
set lstTasks to value of (selected trees of content where class of its value is task or class of its value is inbox task)
if (count of lstTasks) < 1 then return
tell first item of lstTasks
set strName to name
tell repetition
set strLegend to "unit: day | week | month | year
fixed:true = repeat every N units
fixed:false = repeat N units after completion
"
if it is not missing value then
tell it as record
set {blnFixed, lngSteps, eUnit} to {fixed, steps, unit}
end tell
set strUnit to eUnit as string
set strLegend to "unit: day | week | month | year
fixed:true = repeat every N units
fixed:false = repeat N units after completion
"
set strLegend to strLegend & my Translate(blnFixed, lngSteps, strUnit)
set strCode to (("unit:" & strUnit & ", fixed:" & blnFixed as string) & ", steps:" & lngSteps as string)
else
set strCode to pstrDefault
set strLegend to strLegend & "
Not repeating.
Enter a repetition string:"
end if
set blnParsed to false
repeat while not blnParsed
set varResponse to (display dialog strLegend default answer strCode buttons {"Cancel", pNoRepn, "OK"} ¬
cancel button "Cancel" default button "OK" with title pTitle)
if button returned of varResponse = pNoRepn then
set strCode to "missing value"
else
set strCode to text returned of varResponse
set strCode to do shell script "echo " & quoted form of strCode & " | perl -pe 's/(day|week|month|year)s/\\1/'"
end if
try
set recRep to run script "tell application id \"OFOC\"
{" & strCode & "}
end tell"
set blnParsed to true
on error strMsg
set strLegend to strMsg & "
The interval should be of the form:
" & pstrDefault
end try
end repeat
end tell
try
set repetition to recRep
tell repetition as record
set {blnFixed, lngSteps, eUnit} to {fixed, steps, unit}
end tell
set strUnit to eUnit as string
display alert my Translate(blnFixed, lngSteps, strUnit) message "(" & strName & ")"
on error
set repetition to missing value
display alert "Not repeating" message "(" & strName & ")"
end try
end tell
end tell
end tell
on Translate(blnFixed, lngSteps, strUnit)
set strPlural to "s"
if lngSteps = 1 then set strPlural to ""
set strPeriod to (lngSteps as string) & space & strUnit & strPlural
if blnFixed then
"Repeating every " & strPeriod
else
"Repeating " & strPeriod & " after completion"
end if
end Translate