返回文章列表

Notion 行事曆加入動態任務執行狀態

實用工具
Code Gym | Notion 行事曆加入動態任務執行狀態

Notion 是一個強大的筆記軟體,它已經成為很多人管理生活、規劃工作和知識的重要工具,Notion 有豐富的功能和簡潔的操作介面,還可以在手機、桌機、網頁跨平台使用,如果你有用Notion 作為管理時間的工具,一定會很喜歡它的行事曆功能,因為它可以讓我們方便的建立工作項目,快速拖移到想要執行的日期,還可以增加勾選的屬性欄位,這個勾選屬性除了標示已完成工作以外,還讓我們在勾選後有完成工作的成就感,如果我們再搭配一個狀態屬性欄位,能夠依據任務時間,和是否已經完成,來顯示不同的狀態,這會讓你的行事曆顯得更為豐富,有了狀態屬性的欄位,還可以使用Timeline 的view,檢視不同狀態的工作項目,讓你專注在執行的工作,瀏覽等待中的工作和搜尋過去已經完成的任務,是一個很實用的行事曆功能,這篇文章就是要教你,如何增加這個動態的狀態屬性欄位,讓你的行事曆能夠更豐富、更完整。

本篇教學程式碼於文章最後,你可以直接複製貼上到你的Notion 當中。

接下來我要開始示範如何在Notion 中從無到有,建立一個動態的行事曆,首先我要開一個新的page,這個page 你可以在任何地方建立,這裡我選擇在左邊選單的private 建立一個新的page 

我將這個page 命名為Code Gym 行事曆,接著我選擇下方的Calendar,這樣就可以建立出一個基本的日曆

我們可以在選定的日期中點選加號,新增工作項目

我們填入這項工作的標題,標題的下方就是property,我們也可以稱為屬性,在Notion 中,我們可以自由定義每一個page 的property,像是書我們就可以定義,作者、出版社、出版日期這些property

接著我想要增加一個能夠勾選的屬性,當我完成工作項目時,就可以勾選起來,表示我已經完成這個工作項目,這裡我將屬性的名稱改為Done,然後在下方選擇property type 的checkbox,這個型態可以讓我們做勾選的動作,但他並不會對其他屬性產生影響

如果我們只做到這裡,我們可以回到日曆的視圖來看看結果,這裡的checkbox 沒有顯示出來,我們可以點選右上角的properties,打開剛才建立的Done,這樣就可以看到checkbox了,如果你完成這個工作,就可以勾選起來,但這樣子就跟你過去用手寫的記事本功能差不多了,既然我們使用Notion,就應該善用它提供給我們的功能

我現在回到剛才建立的工作項目,我想要繼續新增一個名稱為Status 的屬性,我進入到工作項目的page 中,點選status,我們在property type 中,可以看到有兩個部分,一個是basic,另一個是advanced,basic 的部分是一般常見的文字、數字、日期這些,advanced 則是進階的功能,像是Formula 就提供許多Notion 內建的函式,我們需要使用Formula 當中的函式,來讀取其他屬性的資料,和判斷日期區間,所以我先將status 的type 改為Formula

如果你從來沒有用過Formula 的函式,我這邊會先說明一下操作方式,Notion 提供的這些功能很像程式語言,左邊選單列出所有的屬性,常數,運算子和函式,properties 屬性,是我們剛才已經建立過的date 和done,name 則是page 的名稱,我們將滑鼠放在done 的上方,可以看到右邊出現使用的語法的方式和範例,我們可以使用prop 取得其他屬性的資料,prop 就是property 前四個字母,接著在小括弧中輸入屬性的名稱,因為屬性名稱是字串,所以我們要加上引號,下面的範例是告訴我們,Done 這個checkbox 回傳的資料會是一個布林值,也就是勾選起來會是True,沒有被勾選的話就是False

我們知道如何取得其他屬性的資料後,就可以讓status ,依據done 是否有被勾選做動態顯示,我在左邊的功能選單往下滑,找到一個名稱為if 的函式,右邊顯示一個看起來有點複雜的語法,但他其實很簡單,他在程式語言中有個名字叫三元運算子,第一個參數是布林值,也就是剛才提到的True和False,如果這個布林值是True,那麼這個if 就會回傳第一個value 值,相反,如果布林值是False,就會回傳第二個value 值,我們看下面的範例,這個if 裡面有三個參數,第一個參數是布林值false,後面有兩個字串,分別是yes和no,因為第一個參數是false,所以回傳最後一個參數值,字串no

我們了解取得屬性資料的方法,和if 的用法後,我們就可以運用在status 的屬性中,我在輸入語法的欄位中輸入if,然後我要取得done 這個屬性的資料,判斷是否有被勾選起來,如果他被勾選起來就會回傳True,那麼status 就會變成完成,這裡我想在完成前面加個藍色的圓點,讓他看起來更漂亮一點,我可以在google搜尋emoji blue circle,然後將這個圓點複製下來,貼在完成前面,接著,如果這個工作項目還沒有被勾選起來時,我希望他顯示等待,然後前面放一個黑色的圓點,這樣我們就完成這個動態的狀態顯示功能,完成後你也可以在日曆視圖中試著勾選Done,觀察Status 是否有正常變動,有了這個動態的status 你的行事曆看起來也會更美觀更專業一些

我們在工作項目的進行中,往往會有許多狀況,需要用不同的狀態表示,這裏我要示範如何透過日期時間,來判斷這個工作狀態是否開始進行,這會讓你的工作項目在到達開始執行的日期時,將狀態自動變成進行中,我現在回到剛才的狀態屬性,我要介紹一個計算時間區間的函式dateBetween,dateBetween 這個函式有三個參數,第一和第二個參數是日期,它會幫你計算出這兩個日期相減後的結果,如果第一個日期是比較早的時間,那麼dateBetween 會回傳負值,而這個回傳的時間區間,可以在第三個參數中設定,下方的範例就是所有可以設定的時間區間,像是hours 就是回傳相減後的小時數

所以我將工作項目的日期放在第一個參數位置,今天的日期放在第二個參數位置,第三個參數放hours的話,當工作項目的日期已經到達今天凌晨零時,就會回傳負值,我將使用這樣的邏輯,用在計算這個工作項目狀態,是否已經可以開始進行

 

剛才的狀態屬性是判斷屬性done 勾選後,狀態變成完成,但現在還未勾選的情況下,需要多增加一個判斷條件,所以我將後面的字串等待移除,我要在這個參數位置多加入一個判斷if,如果工作的執行日期已經抵達今天的日期,或是在今天之前,就會小於0,這個時候會是回傳true,所以狀態會是進行中,如果dateBetween 回傳大於0,表示工作的日期在今天之後,還沒有開始的意思,狀態就會是等待

 

範例程式碼
if(prop("Done") == true, "🔵 完成", if(dateBetween(prop("Date"), now(), "hours") < 0, "🟢 進行中", "⚫ 等待"))

 

完成上述程式後,你可以回到日曆的view試試看拖移工作項目,看看狀態是否能依日期改變而變動,當我們有許多不同的工作狀態時,我們就可以用Notion 提供的Timeline,觀察不同狀態中的工作項目,我現在新增一個view,選擇Timeline後,點選create,然後在上方的group 選單中,選擇group by,最後選擇status 作為group by 的屬性,選擇exact,完成設定後,你就會看到用工作狀態分組的Timeline

因為這個示範我只有一個進行中的工作項目,所以目前只會有一個分類,但我製作了一段Youtube,使用一個比較接近現實狀況的範例,來示範這個動態status 帶給我們的方便和好處,你可以觀看下方的Youtube 影片觀賞以上的教學和示範。

 

Code Gym 致力於創造實用的高品質線上課程,幫助想要學習程式語言和IT技術的朋友,能透過我的課程,學習知識,發揮熱情,創造出屬於你自己的作品

瀏覽所有課程