简介:在Mac上,像交代Siri一样,一句话完成日程管理


比较偏爱的日历管理工具是将“提醒事项”和“日历事件”结合在一起的,并通过自然语言添加日程。

Fantastical 2就是Mac上做到这点的软件。

创建新项目只需要输入一句话,它会自动解析描述的时间、地点,解析是日历项还是提醒事项。

比如,描述时间可以自动将事件添加到日历的事件。Screen Shot 2016-06-06 at 5.52.53 PM.png

如果说"remind"或者“todo”使用,将会自动创建提醒事项。

Screen Shot 2016-06-06 at 5.53.11 PM.png

很喜欢这种综合管理的方式。

但是为了追求极致,我不愿意每次创建还要打开一个软件。我希望这一切都是一步完成的。于是,我发掘了一个优雅的方式利用Fantastical:利用Alfred + Fantastical。

Alfred是几乎所有操作的入口,我希望几乎所有工作都由这个入口完成。自行添加入口之后的后端,只需要写workflow来完成。

交互方式

利用一个workflow来与fantastical交互。

一个最简单的方式是使用Apple Script。Apple Script是Mac自带的简单的脚本语言。很简洁,其诞生就为了不会编程的人通过简单语句自动化操作。

各个应用在开发的时候很可能为系统留下了调用的接口,可以利用Apple Script调用这个接口。所有应用预留的接口可以从Apple Script编辑器的Dictionary中找到。

打开系统自带的Script Editor,打开File -- Open Dictionary

Screen Shot 2016-06-06 at 6.05.37 PM.png可以看到,Fantastical果然也为系统调用留下了接口。Fantastical预留了一个函数叫做parse sentence,从名字可以看出来,是用来解析文本的。

Screen Shot 2016-06-06 at 6.05.51 PM.png我们可以看到函数的描述。函数的参数是一段文本,然后这段文本相当于给Fantastical的输入文本。由Fantastical解析这个文本,决定创建的项目。

那么我们调用这个函数就足够用了。

制作一个Alfred Workflow

这个workflow工作很简单,keyword模块接收参数,一个action调用接口。

Screen Shot 2016-06-07 at 12.30.05 PM.png

创建一个执行Apple Script的action

Screen Shot 2016-06-06 at 6.09.51 PM.png

我们写三行代码。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输入框

Screen Shot 2016-06-06 at 6.15.09 PM.png然后回车,事件被Fantastical处理了

Screen Shot 2016-06-06 at 6.15.26 PM.png

提醒被创建,并且同步给所有的设备。

Screen Shot 2016-06-06 at 6.18.37 PM.png再比如,明天14:00到15:00参加xx讲座

Screen Shot 2016-06-07 at 12.37.55 PM.pngScreen Shot 2016-06-07 at 12.38.01 PM.png

日历项目就被创建。

Screen Shot 2016-06-07 at 12.39.40 PM.png

只需一句,随心所欲。


整个过程简洁优雅,就好像对着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。

7
2