简介:在Mac上,像交代Siri一样,一句话完成日程管理
比较偏爱的日历管理工具是将“提醒事项”和“日历事件”结合在一起的,并通过自然语言添加日程。
Fantastical 2就是Mac上做到这点的软件。
创建新项目只需要输入一句话,它会自动解析描述的时间、地点,解析是日历项还是提醒事项。
比如,描述时间可以自动将事件添加到日历的事件。
如果说"remind"或者“todo”使用,将会自动创建提醒事项。

很喜欢这种综合管理的方式。
但是为了追求极致,我不愿意每次创建还要打开一个软件。我希望这一切都是一步完成的。于是,我发掘了一个优雅的方式利用Fantastical:利用Alfred + Fantastical。
Alfred是几乎所有操作的入口,我希望几乎所有工作都由这个入口完成。自行添加入口之后的后端,只需要写workflow来完成。
交互方式
利用一个workflow来与fantastical交互。
一个最简单的方式是使用Apple Script。Apple Script是Mac自带的简单的脚本语言。很简洁,其诞生就为了不会编程的人通过简单语句自动化操作。
各个应用在开发的时候很可能为系统留下了调用的接口,可以利用Apple Script调用这个接口。所有应用预留的接口可以从Apple Script编辑器的Dictionary中找到。
打开系统自带的Script Editor,打开File -- Open Dictionary
可以看到,Fantastical果然也为系统调用留下了接口。Fantastical预留了一个函数叫做parse sentence,从名字可以看出来,是用来解析文本的。
我们可以看到函数的描述。函数的参数是一段文本,然后这段文本相当于给Fantastical的输入文本。由Fantastical解析这个文本,决定创建的项目。
那么我们调用这个函数就足够用了。
制作一个Alfred Workflow
这个workflow工作很简单,keyword模块接收参数,一个action调用接口。

创建一个执行Apple Script的action

我们写三行代码。q是传入的值,也就是输入的文本。我们打开Fantastical,然后调用解析函数去解析那句话。嗯,完了。
--以"--"开头的都是注释
on alfred_script(q) -- 默认模板,这个是调用的函数,参数q是输入的文本
-- your script here 自己的代码
tell application "Fantastical" -- 激活Fantastical
parse sentence q -- 利用接口解析外部输入的文字
end tell
end alfred_script -- 模板结束
下一步,为这个动作设定一个快捷键。然后就可以使用了。
使用效果
我将快捷键绑定在了"!"上。
使用时候,"!"开头的文本都是交给Fantastical处理。
试想一个场景,有个任务,明天12点要跟妹子吃饭。我直接将这句话写在了Alfred输入框
然后回车,事件被Fantastical处理了

提醒被创建,并且同步给所有的设备。
再比如,明天14:00到15:00参加xx讲座


日历项目就被创建。

只需一句,随心所欲。
整个过程简洁优雅,就好像对着Siri说了句”提醒我明天做什么“,后面的东西交给设备自己去处理。使用最频繁的Alfred就成了一切的入口,不需要停下工作,不需要切换软件,一切就这样完成。
我很偏爱这种日历的event加上reminder共同处理的方式。这两种事物本质其实相通。reminder更像是任务,只有一个截止日期,可以标记完成,可以推迟。而Event是一个特定时间会发生的事情,有开始和持续时间。
在iOS的Calendar 5上,提醒事项就是被叫做task,任务。Calendar 5上将提醒事项设置的稍微带着点GTD的感觉。它将提醒进行了分类,原来的提醒事项都分到了Inbox,标记之后可以分类到Today,此外还有按照时间为你归类的Upcoming。
iOS的OmniFocus也有一个capture的选项,把reminder事项变成自己的item,这样对着Siri说,提醒我做xx,事件就被自动添加到OmniFocus中。
因此,task,或者就是reminder,被使用很频繁。精简到了一句话交代的优雅,自己感到很必要并且很满意。
One More Thing...
我的Fantastical还在试用期。并且这软件的确有点贵,虽然很好,过了试用期也不准备买了。
因为,等到过期那时候,WWDC开始了。如果真的就像传闻中所说的那样,开放了Siri的API,那么何必折腾这些,XD...
事实上,论自然语言创建日历事件,系统自带的日历已经足够,并且支持中文。Fantastical只是拥有我很喜欢的添加提醒事项的作用。
不知道Mac OS上日历诸多很好的特性,在iOS上就没有。这就跟其他的日历软件存在留下空位。比如Reddle的Calendar 5,或者Fantastical。
