![](http://img4.doubanio.com/view/thing_review/large/public/p18649.jpg)
当当当当!终于轮到Applescript这一篇了,我知道有许多人对此抱有极大的兴趣。因为有了Applescript的支持,弥补了许多Omnifocus不足之处,让它看起来更像“神器”了是不是?
不过,在我们正式开始之前,我还想强调一点,Applescript虽然功能强大,但对于整个系统(或者说,工作流,这个词我更喜欢)来说并不那么重要,它属于锦上添花而非雪中送炭,所以对于没有mac版的人来说,只要想办法解决自定义透视的问题,有没有Applescript并不那么重要——但如果你真的很喜欢Omnifocus,也想发挥它100%的作用的话,买一台mac也没什么。
【如何安装Applescript】
官方解说见: http://forums.omnigroup.com/showthread.php?t=7453
这里简单普及一下
打开applescript编辑器,在偏好设置-通用里把下面红框的部分打上勾即可。
![](http://img3.douban.com/view/thing_review/large/public/p18650.jpg)
然后我们要做的就是打开Omnifocus软件,在桌面右上角,点击下图红框部分的图标
![](http://img3.douban.com/view/thing_review/large/public/p18651.jpg)
![](http://img3.douban.com/view/thing_review/large/public/p18652.jpg)
之后,只要将你下载的Applescript放入此文件夹中即可。如果想要在Omnifocus中看到安装的Applescript,只需要选择自定义工具栏,再将安装好的applescript拖入工具栏即可。
【我常用的Applescript】
首先必须要声明的是,以下Applescript并非我编写,事实上本人不会任何编程语言,这些Applescript皆为国外网友制作,不过Applescript的语言还不算难懂,一般人可自行调整少数参数,如果有网友懂Applescript的话,欢迎修改或分享更多更好的Applescript。
![](http://img3.douban.com/view/thing_review/large/public/p18653.jpg)
1.【推迟】与【小睡】
推迟:可推迟截止日期(可选择时间)
小睡:可推迟开始日期(不可选择时间)
使用方法:选中你要选择推迟的项目或任务,点击按钮即可,注意最好不要在透视环境下使用这两个applescript,容易死机,在项目环境下使用没有问题。另外Ritual文件夹下的我不建议使用小睡功能,因为该applescript目前只能开始时间延后的天数,而默认的时间(比如下午5点开始)会调回默认的8am,(据作者所说,保持原有开始时间似乎无法实现,希望有Applescript牛人出现)。
![](http://img3.douban.com/view/thing_review/large/public/p18654.jpg)
推迟功能可选择推迟到某天某时,d代表天数、w代表周数、或者可直接写成“Jan 19 14:00”或者“Sat 5pm”这样的形式。
![](http://img3.douban.com/view/thing_review/large/public/p18655.jpg)
小睡功能只能选择推迟开始时间到几天后(注意从你按下按钮的那天算起,而不是该项目原来的设定的开始时间算起)
2.【艾宾浩斯】
Omnifocus本身的重复功能虽然已经很强大,但是依然有一些缺失,比如对于学生党来说,按照艾宾浩斯记忆曲线重复的任务对于复习英语等等显得很重要了。虽然改动Omnifocus本身的重复功能不太可能实现,但是借助Applescript这一强大外挂,我们也可以来个曲线救国。
使用方法:在你的项目文件夹新建一个Review的项目,然后在该项目中键入你需要复习的任务名称,比如“review:Lesson 1”,然后按下艾宾浩斯的按钮,下面会生成四个同样名称的任务,但是呈灰色,那是因为它们的开始时间按照艾宾浩斯的记忆曲线来设定。
注意:由于我将每个晚上的Evening Ritual作为整理每日回顾,整理任务的时间,来安排第二天的工作,因此Applescript的设定时间都提前了一天,但实际执行是按照(24h,3d,5d,7d,15d,30d)来算的。
举个例子,比如今天我学习了一课英语,然后在Omnifocus的review项目里设定“English review:lesson 1”,然后按下艾宾浩斯的按钮,这样在今天晚上回顾的时候,当我打开“个人计划”的透视,会看到review这一项目里出现我前面设定的内容,然后我将其标上旗标,也就是我明天要做的事。同理,当我应该在第三天再次复习这一课时,我在第二天晚上的每日回顾时,就会看到这个任务出现,然后打上旗标。
该Applescript可根据自己的艾宾浩斯曲线来设定修改时间,只是如果你是在今天决定明天要做的事情的话,注意把Applescript里的时间往前挪一天。
![](http://img4.douban.com/view/thing_review/large/public/p18656.jpg)
3.【总时间】
这个Applescript可以用来计算几个项目的“估计时间”总和,用法很简单,只要选中他们按下按钮就可以了,最广泛的应用在第二天工作时间的估计上,我通常会限制第二天工作时间总计不超过5h。当然在使用这个Applescript时,你先要在检查器中设定每一个任务的估计时间。对于正在尝试番茄工作法和柳比歇夫事件记录法的筒子们,我推荐这个Applescript,与Atimelogger 2时间记录软件搭配,对自己每项工作大概需要花费多少时间会有更清晰的了解。
![](http://img4.douban.com/view/thing_review/large/public/p18657.jpg)
4.【模板】
这是这5个Applescript中功能最强大的一个,原作者有一篇目测1000多字的说明文档( http://cmsauve.com/projects/templates/),其复杂性和强大性不言而喻了。
使用方法在这里简单介绍一下,更详细的说明请参考上面的链接:
该Applescript要求你现在资源库里新建一个名为Template的文件夹,用来存放你设置好的模板。Applescript主要有两种作用,一种是模板的复制,即参数不做改变的模板将会直接复制到你所选择的其他文件夹中,另外一种是可以事先设置需要的参数,在复制的同时,模板中的相应参数会相应变换,后一种方法有多种应用,具体请参考上面链接。
下面举一个最简单的淘宝购物的实例:
首先在Template文件夹新建一个模板,其中淘宝店家的名字和购买的东西每次都不同,但基本流程相同,于是在变量前加上$符号,注意要将变量同时写在项目的附注部分。
![](http://img4.douban.com/view/thing_review/large/public/p18658.jpg)
然后我们按下该applescript,出现了如下画面:
![](http://img4.doubanio.com/view/thing_review/large/public/p18659.jpg)
选中模板的名字,按“Select This Project”,会让你选择将该模板放置到哪个文件夹中:
![](http://img3.douban.com/view/thing_review/large/public/p18660.jpg)
到这一步,如果模板中没有设置任何参数,那么该模板会直接复制到选中的文件夹中,如果有参数,则会有如下画面:
![](http://img3.douban.com/view/thing_review/large/public/p18661.jpg)
![](http://img3.douban.com/view/thing_review/large/public/p18662.jpg)
填入相应的变量,确定即可。
最后的效果:
![](http://img3.douban.com/view/thing_review/large/public/p18663.jpg)
5.【报告】
该Applescript可在Evernote中生成今天、昨天、这周、上周、这个月的完成报告,使用前先打开Evernote,然后按下按钮,选择想要生成的报告即可。
![](http://img3.douban.com/view/thing_review/large/public/p18664.jpg)
以上五个Applescript下载链接: http://pan.baidu.com/share/link?shareid=264666072&uk=3993404932
感谢@韩五花 同学的解答,目前部分同学于东艾宾浩斯applescript无法运行,请尝试下面方法:
艾宾浩斯那个问题我也遇到了,是dueSec的问题,把所有dueSec的部分去掉就可以了。
把四个property后面那一段换成下面的就行。
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