下記ページを参照しながら、notionで進捗管理をする仕組みを作ってみました。
バージョンアップで変わっている箇所がありましたので、備忘録として記載します。
▼NotionでWBSを管理する
https://mebiusbox.github.io/blog/2023/01/17/notion-wbs
データベースの作成
まず、データベースを作ります。
プロパティは下記のとおり。
タイトル/タイトル進捗(親)/関数進捗(子)/セレクト- 自動
- %で進捗をセレクトします
- 0%
- 25%
- 50%
- 75%
- 100%
- ※刻み具合はお好みで調整してください

ここまでつくったら、サブアイテムの設定をします。
データベースの設定(…ボタン)からカスタマイズ>サブアイテム>サブアイテムをオン、で有効化できます。
プロパティをさらに設定します。
_進捗N/関数_進捗R/ロールアップ- リレーションに
サブタスクを設定 - プロパティに
_進捗Nを設定 - ※
計算は、この時点ではオリジナルを表示にしてください
- リレーションに

進捗(子)の値を集計して進捗(親)に反映する処理

_進捗Nは、進捗(子)で選んだパーセンテージを数値に変換します。
まず、数値として扱うために、_進捗Nの関数を編集で1と入力します。
すると、数値の形式と表示方法を選択できるようになります。
数値の形式:数値表示形式:バー(元サイトではリング。どっちでも好きな方を)
_進捗Nが数値に設定されると、ロールアップしている_進捗Rの計算(↑でオリジナルを表示にしたところ)に項目が追加されるので、合計を設定します。表示形式は数値にしておきます。
_進捗Nの関数
if(prop("進捗(子)") == "自動", floor(prop("_進捗R") / max(1, length(replaceAll(prop("サブアイテム") + ",", "[^,]", "")))), toNumber(substring(prop("進捗(子)"), 0, -1)))元サイトから変えているのは後半のsubstring関数です。
元サイトはslice(prop("進捗(子)"), 0, -1)としているのですが、関数のアップデートで、slice関数は処理が変わりました。詳しくは下記参照。
▼関数2.0(Formulas 2.0)を徹底解説
https://temp.co.jp/blog/2023-09-10-formula20#関数名は同じで機能が変更された関数
進捗(親)の関数
if(length(prop("サブアイテム")) > 0, floor(prop("_進捗R") / max(1, length(replaceAll(prop("サブアイテム") + ",", "[^,]", "")))), prop("_進捗N")) / 100完成

_進捗N, _進捗Rは非表示にして、見た目を整えたら完成です。
使い方としては、親アイテムの進捗(子)は自動に設定。
子アイテムの進捗(子)を設定してやると、親の進捗を計算して出してくれます。


