關(guān)鍵詞:效率 | 自動化 | GTD | 定時提醒 | IFTTT Rich Notification | Trello As DB
慢慢發(fā)覺自己并不是一個喜歡固定計劃的人,工作外的業(yè)余時間本就不多,要好好珍惜。然而定死的TODO計劃總是提不起勁去做,不做的結(jié)果便是天天晚上一回家就開始打游戲ε=(′ο`*)))。最近心想不如試試看讓老天每天幫我選一件有意義的事情做吧,這樣好像有新鮮感一點(diǎn)。
首先便想到可以自己用Python寫一個隨機(jī)任務(wù)生成放樹莓派上,每天發(fā)通知給iPhone或者微信。想想我勒個娘又要找半天庫,然后還要實現(xiàn)、部署,做完還不一定真能讓我Do起來...還是先找個更簡單的方法,做個MVP(最小可用產(chǎn)品)試試看吧。
于是吭哧吭哧玩起了iOS上的效率應(yīng)用們。經(jīng)過一通亂搞,我用Workflow/IFTTT/Trello做出了這樣的一個MVP(因Workflow關(guān)系只能用于iOS平臺):
- 用戶可以將平時想要做的任務(wù)都存放在一個列表里,并且可以隨時更新
- 產(chǎn)品每天從列表中隨機(jī)抽取(不一定是均勻分布)一個任務(wù),作為當(dāng)天的任務(wù)并記錄下來
- 用戶可以主動查詢當(dāng)天的任務(wù)是什么,并且有地方查看歷史記錄
- 產(chǎn)品每天在iPhone上定時提醒用戶當(dāng)天的任務(wù)
先列出各部分的成品地址,有興趣的可以拿來參考(貌似也可以改成午飯選擇器33):
- Trello:https://trello.com/b/VaskY9Zy/life-hack
- Workflow:https://workflow.is/workflows/3aff3425f374458fa802248d2965cd85
- IFTTT
下面大致說一下我的實現(xiàn)方法:
Trello部分
開一個新board取名叫Life Hack,其中新建兩個列表,Daily Random用來存任務(wù)列表,每張卡片的名稱(Name)里存放任務(wù)名,其余可為空;Daily Tasks用來存每天選出來的任務(wù),名稱里存放任務(wù)所屬的日期、描述(Description)里存放日期當(dāng)天選擇的任務(wù)名,評論(Comment)里可以存放完成情況。

Trello在這里的作用相當(dāng)于一個用于持久化數(shù)據(jù)、有UI的數(shù)據(jù)庫,在日常使用時,用于隨機(jī)的任務(wù)列表和每日的任務(wù)記錄,都可以在其中進(jìn)行自由管理,不需要涉及其他兩個工具。
使用一段時間以后的樣子:

Workflow部分
Workflow作為整個應(yīng)用的核心,實現(xiàn)的邏輯如下:
- 從Trello的Daily Tasks處讀取當(dāng)天的任務(wù)
- 如果當(dāng)天已挑選出任務(wù),將其記為當(dāng)天任務(wù)內(nèi)容
- 如果當(dāng)天任務(wù)還沒有被挑選:
- 從Trello的Daily Random中讀取任務(wù)列表
- 隨機(jī)從任務(wù)列表中選擇一個任務(wù)
- 將該任務(wù)記為當(dāng)天任務(wù)內(nèi)容,并存入Trello的Daily Tasks
- 彈出iOS提醒框,顯示當(dāng)天任務(wù)內(nèi)容
做好的workflow app地址戳這里。

這里給一些說明:
- 因為Workflow的組件比較難寫出更復(fù)雜的邏輯,這里的實現(xiàn)取巧利用了日期的單方向性,每次將新的當(dāng)天任務(wù)內(nèi)容存入
Daily Tasks時,都是放在最上面,因此每次從中找當(dāng)天任務(wù)內(nèi)容的時候,也只須查看最上面那張卡片(算是個棧來著),最上面日期不吻合,那肯定就是還沒選定當(dāng)天任務(wù)了 - Workflow與Trello之間的數(shù)據(jù)交換形式,以最前面的一段邏輯為例,
Get Trello Items得到的是Item的List,再經(jīng)過Get Item from List得到單個Item,這個Item可以認(rèn)為是字符串,在這里存的是Trello卡片名稱(即日期),這個Item接下來作為input傳給了If,作是否與今天日期相等的判斷。如果相等,那就把卡片描述里的當(dāng)天任務(wù)名用Get Details of Trello Item讀出來,賦值給變量Today。(吐槽:圖形編程的缺點(diǎn)真的蠻明顯的,要確定數(shù)據(jù)類型得靠試) - 編寫時需要注意
Current Date的類型和長度一致。我在這里根據(jù)需要用的是short date + None time,例如“12/4/2018”。
接下來還可以略微增強(qiáng)一點(diǎn)隨機(jī)性的能力,目前的方法得到的是均勻分布,各個任務(wù)被抽中的概率相同。如果要讓不同任務(wù)有不同的概率,最蠢但最直接的辦法是在Trello的Daily Random中給每個任務(wù)建立不同數(shù)量的卡片,比如想要閱讀任務(wù)多一些,那多建幾張名稱為“閱讀2小時”的卡片就好了。
IFTTT部分
到上面為止,其實整個應(yīng)用已經(jīng)可以使用了,可以將Workflow app存放到iPhone X桌面,每次點(diǎn)一下就能跑啦。但是少了一個定時主動提醒的功能。大致看了下Workflow是沒有這個能力的,大致探索后我選擇了IFTTT于不久前3.1版本更新的Rich Notification控件來填補(bǔ)這個部分:
if
this: Date and Time -> 設(shè)置時間周期(每多少天,每天幾點(diǎn)等等)
then
that: Notifications -> 選擇Rich Notification類型 -> Link URL填寫Workflow app的地址(上文已給出)

這樣下來,每天一到我設(shè)置的晚上八點(diǎn),IFTTT就會推送一條提醒到我的所有iOS設(shè)備,點(diǎn)擊提醒就可以打開Workflow app,出現(xiàn)類似下圖的界面,點(diǎn)擊Open再運(yùn)行該app就可以獲取當(dāng)天的隨機(jī)任務(wù)(交互略惡心)。雖然無法做到讓IFTTT直接運(yùn)行Workflow app,但總算有了基本的主動提醒能力。

做好的IFTTT Applet地址戳這里,另外我還做了一個測試應(yīng)用,點(diǎn)擊按鈕(Press Button)就能打開我做的Workflow app,地址戳這里。