别人分享的一个 OmniFocus 2 的 AppleScript,现在升级了 macOS Mojave 版本 10.14 后,无法在 OmniFocus 中正常使用了。
2018-09-28 21:56:13 +08:00
Hear8820
求脚本大佬帮助修复一下。
附上代码
property pReviewProject : "艾宾浩斯" -- name of project which will receive tasks
property pReviewIntervals : {3, 8, 15, 30, 60} -- number of days before each repeat, augment as desired
property pReviewDaysUntilDue : 1 -- allow two days after start date for completion
property pAutoSave : false -- set this to false for faster performance but slightly more risk
on GetDefaultDueTime()
tell application id "OFOC" to tell front document to set timeStr to value of setting id "DefaultDueTime"
set {otid, text item delimiters} to {text item delimiters, ":"}
set {dueHour, dueMin, text item delimiters} to every text item in timeStr & otid
return (((dueHour * 60) + dueMin) * 60)
end GetDefaultDueTime
on ProcessAction(selAction, dstProject, dateToday, dueTimeOffset)
local startDate, dueDate, i
tell application id "OFOC"
repeat with i from 1 to (length of pReviewIntervals)
set newAction to duplicate selAction to end of tasks of dstProject
set startDate to dateToday + (item i of pReviewIntervals) * days
set dueDate to startDate + pReviewDaysUntilDue * days + dueTimeOffset
tell newAction to set {defer date, due date, completed} to {startDate, dueDate, false} -- if user already completed original, we need to make duplicate active
end repeat
end tell
end ProcessAction
on run {}
set dateToday to (current date) - (time of (current date))
set dueTime to my GetDefaultDueTime()
tell application id "OFOC"
tell front document
tell content of first document window
set lstSelected to value of (selected trees where class of its value is task)
if ((count of lstSelected) = 0) then
display alert "No suitable tasks in selection"
return
end if
end tell
try
set dstProject to first flattened project whose name is pReviewProject
on error
display alert "Could not find destination project \"" & ¬
pReviewProject & "\""
return
end try
set oldWillAutosave to will autosave
set will autosave to pAutoSave
try -- catch any errors and restore autosave setting
repeat with thisOne in lstSelected
my ProcessAction(thisOne, dstProject, dateToday, dueTime)
end repeat
end try
set will autosave to oldWillAutosave
end tell
end tell
end run
2 条回复
Lax
2018-09-29 00:07:21 +08:00
懒得细看了,大概讲讲是做什么的吧
Hear8820
2018-10-02 19:41:35 +08:00
@
Lax 就是自动化脚本吧,在 OmniFocus 点一下这个脚本,任务就会按照脚本分成重复的多个任务(截止时间会自动变成脚本设置的时间。
现在的问题是,我点击这个脚本后,OmniFocus 只能生成脚本中的第一个时间,后面的无法生成的(就是个艾宾浩斯的时间)。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/493660
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.