最近Notionを使い始めた。ステータスプロパティを追加した「タスク」DBでタスク管理をしている。
「Done」タスクの数を数えるには少し回り道が必要だったのでメモしておく。
なお、この記事は2021/11/26時点のNotionの機能をベースに記載されている。
TL;DR
- Notionで「タスク」と「週報」のDBを作っている
- 「タスク」には
Select
型の「ステータス」プロパティを作っている
- 「タスク」には
- 「週報」ページのRollupで「
Done
ステータスのタスク数」を計算できなかった - 「タスク」に
prop("Status") == "Done"
というFormula
型のChecked
プロパティを作ってこれをRollupで集計するとできた
Notionでタスク管理
最近Notionでタスク管理を始めた。 フォーマットは次の記事の「タスク」と「週報レトロスペクティブ」の作り方とデータベースを参考にカスタマイズしている。
タスクにはこんな感じでSelect
プロパティとしてステータスを用意している。
タスクはDBのページとして登録しており、週報用のDBのページ多:多のリレーションを貼っている。
(同じタスクを数週間使いまわしていたりするので、多:多になっている)
Selectプロパティの特定ステータスの数はRollupでカウントできない
週末に「今週どれくらいタスクを消化できたか?」を計測するため、タスクのステータスが「Done」になっているタスクの数を数えたかった。 疑似SQL的に言うとこんな感じ。
SELECT COUNT(*)
FROM `タスク'`
WHERE `タスク`.`ステータス` = 'Done'
AND `タスク`.`Week` CONTAINS '調べたい週のページ'
Notionには関連DBの特定要素を集計するロールアップというプロパティがあるのでこれでできるかと思った。
しかし、次のようにロールアップを選択してもSelect
型のプロパティの特定値をカウントすることはできないようだった。
RELATION | All tasks |
---|---|
PROPERTY | Status |
CALCULATE | ??? |
2021/11/26現在のロールアップでは次のような集計しかできないので、「Done
の数だけ数える」ができない。
- Show original
- Show unique values
- Count all
- Count values
- Count unique values
- Count empty
- Count not empty
- Percent empty
- Percent not empty
タスク側で「Done
かどうか」をみるFomulaを作っておく
毎回Doneの数を数えたくなかったので、隠しプロパティを設定することで解決した。
Select
プロパティは集計できないようだったので、各タスク側にStatus
プロパティがDone
だったらチェック状態になるFormula
プロパティを設定した。
設定内容は次の通り。
prop("Status") == "Done"
これを使えば、各タスクに「Status
== Done
のときは自動でチェック状態」になるプロパティが設定できる。
このような隠しプロパティを用意して、あとは週報側でこのプロパティを集計するロールアップを設定すれば良い。
RELATION | All tasks |
---|---|
PROPERTY | done |
CALCULATE | checked |
スクショは27タスクがこの週報に登録されていて、9タスクがDone
ステータスになっている集計ができている状態。
終わりに
Done
の数は自動で集計できたが、これはリレーショナルな情報なので、未完のタスクが翌週Done
になると数字が更新されてしまう。
そうすると年末に振り返ったとき、すべての週で登録したタスクがすべてDone
ステータスになりかねない。
なので、週末振り返るときに集計されたDone
の数を固定値として保存するプロパティも用意してある(ここはRollupの値を手動でコピペするしかない)。
プログラマとしてはNotionはノーコードでいろいろなデータの表現をリレーショナルにできるのでおもしろい。 あまりカスタマイズしすぎるとあとでメンテできなくなりそうだが、適度にカスタマイズして利用していきたい。
参考
- リレーションとロールアップ
- Planning Your 2021 With Notion: My Weekly GTD Planner
- 2021 GTD Planner & Retrospective