最近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