使用Workflow/IFTTT/Trello做一个随机任务管理
关键词:效率 | 自动化 | GTD | 定时提醒 | IFTTT Rich Notification | Trello As DB
慢慢发觉自己并不是一个喜欢固定计划的人,工作外的业余时间本就不多,要好好珍惜。然而定死的TODO计划总是提不起劲去做,不做的结果便是天天晚上一回家就开始打游戏ε=(´ο`*)))。最近心想不如试试看让老天每天帮我选一件有意义的事情做吧,这样好像有新鲜感一点。
首先便想到可以自己用Python写一个随机任务生成放树莓派上,每天发通知给iPhone或者微信。想想我勒个娘又要找半天库,然后还要实现、部署,做完还不一定真能让我Do起来...还是先找个更简单的方法,做个MVP(最小可用产品)试试看吧。
于是吭哧吭哧玩起了iOS上的效率应用们。经过一通乱搞,我用Workflow/IFTTT/Trello做出了这样的一个MVP(因Workflow关系只能用于iOS平台):
- 用户可以将平时想要做的任务都存放在一个列表里,并且可以随时更新
- 产品每天从列表中随机抽取一个任务,作为当天的任务并记录下来
- 用户可以主动查询当天的任务是什么,并且有地方查看历史记录
- 产品每天在iPhone上定时提醒用户当天的任务
先列出各部分的成品地址,有兴趣的可以拿来参考(貌似也可以改成午饭选择器33):
- Trello:https://trello.com/b/VaskY9Zy/life-hack
- Workflow:https://workflow.is/workflows/3aff3425f374458fa802248d2965cd85
- IFTTT
下面大致说一下我的实现方法:
Trello部分
开一个新board取名叫Life Hack,其中新建两个列表,Daily Random
用来存任务列表,每张卡片的名称(Name)里存放任务名,其余可为空;Daily Tasks
用来存每天选出来的任务,名称里存放任务所属的日期、描述(Description)里存放日期当天选择的任务名,评论(Comment)里可以存放完成情况。
Trello在这里的作用相当于一个用于持久化数据、有UI的数据库,在日常使用时,用于随机的任务列表和每日的任务记录,都可以在其中进行自由管理,不需要涉及其他两个工具。
使用一段时间以后的样子:
Workflow部分
Workflow作为整个应用的核心,实现的逻辑如下:
- 从Trello的Daily Tasks处读取当天的任务
- 如果当天已挑选出任务,将其记为当天任务内容
- 如果当天任务还没有被挑选:
- 从Trello的Daily Random中读取任务列表
- 随机从任务列表中选择一个任务
- 将该任务记为当天任务内容,并存入Trello的Daily Tasks
- 弹出iOS提醒框,显示当天任务内容
做好的workflow app地址戳这里。
这里给一些说明:
- 因为Workflow的组件比较难写出更复杂的逻辑,这里的实现取巧利用了日期的单方向性,每次将新的当天任务内容存入
Daily Tasks
时,都是放在最上面,因此每次从中找当天任务内容的时候,也只须查看最上面那张卡片(算是个栈来着),最上面日期不吻合,那肯定就是还没选定当天任务了 - Workflow与Trello之间的数据交换形式,以最前面的一段逻辑为例,
Get Trello Items
得到的是Item的List,再经过Get Item from List
得到单个Item,这个Item可以认为是字符串,在这里存的是Trello卡片名称(即日期),这个Item接下来作为input传给了If
,作是否与今天日期相等的判断。如果相等,那就把卡片描述里的当天任务名用Get Details of Trello Item
读出来,赋值给变量Today
。(吐槽:图形编程的缺点真的蛮明显的,要确定数据类型得靠试) - 编写时需要注意
Current Date
的类型和长度一致。我在这里根据需要用的是short date + None time,例如“12/4/2018”。
接下来还可以略微增强一点随机性的能力,目前的方法得到的是均匀分布,各个任务被抽中的概率相同。如果要让不同任务有不同的概率,最蠢但最直接的办法是在Trello的Daily Random
中给每个任务建立不同数量的卡片,比如想要阅读任务多一些,那多建几张名称为“阅读2小时”的卡片就好了。
IFTTT部分
到上面为止,其实整个应用已经可以使用了,可以将Workflow app存放到iPhone X桌面,每次点一下就能跑啦。但是少了一个定时主动提醒的功能。大致看了下Workflow是没有这个能力的,大致探索后我选择了IFTTT于不久前3.1版本更新的Rich Notification
控件来填补这个部分:
if
this: Date and Time
-> 设置时间周期(每多少天,每天几点等等)
then
that: Notifications
-> 选择Rich Notification
类型 -> Link URL
填写Workflow app的地址(上文已给出)
这样下来,每天一到我设置的晚上八点,IFTTT就会推送一条提醒到我的所有iOS设备,点击提醒就可以打开Workflow app,出现类似下图的界面,点击Open
再运行该app就可以获取当天的随机任务(交互略恶心)。虽然无法做到让IFTTT直接运行Workflow app,但总算有了基本的主动提醒能力。
做好的IFTTT Applet地址戳这里,另外我还做了一个测试应用,点击按钮(Press Button)就能打开我做的Workflow app,地址戳这里。