Formulaを用いた繰り返しDB生成による、当番表作成の道のり
2025年2月18日
🫠 自己紹介
はじめまして!
あなたは誰ですか?という方も多いと思うので簡単な経歴とリンクを記載させてください!
より詳細は下記のページから確認できます!
https://motsuo.vercel.app/about-meはじめに
みなさん、Formulaつかっていますか。
私がNotionにハマってからプライベートでも仕事でも、色々と試行錯誤をして よりよいデータベースを!と思い、色々いじりながら作ってきました。
https://www.notion.so/ja-jp/help/formulasFormulaの中では、時間をいじったり、過去にはプログレスバーなどを作っている人もいました。 ※プログレスバーに関しては現在Notionが対応してくれてますね。
一見、Excelやスプレッドシートの関数のように使えますが、NotionのFormulaはこれらとは挙動がまるで違うので、普段Excelやスプレッドシートを使っている人からすると使いづらいなと感じることもあります。
今回はそのFormulaを無理やりHack的な方法で当番制のDBを作成しようとしました。
結果としてうまく作れなかったのですが、とはいえこの思想を引き継いだ誰かがより良いデータベース構築をしてくれることを願って備忘録も兼ねて書き留めておこうかと思います。
ことのきっかけ
普段の業務の中でNotionを用いており、 当番制で何かをするということは業務の中でよくある話かと思います。 この当番制をFormulaを使って自動化できたらいいよね!というのがことの発端でした。

DBのページを日単位で作成している場合、担当ごとにチェックボックスをつけて 前日と見比べながらチェックをつける。 そういった方法で行うのが妥協案ですが、他に何かいい方法がないか模索し始めました。
アプローチとして考えたのは下記のようなものです。

自動採番を作ってみる / Auto-increment
まずは、上から順番に数字を割り当てるために、自動採番の機能を試していきます。
スプレッドシートでいう下記のような機能のことです。

なお、自動採番の機能については下記を参照しており、下記について解説します。
複製したDBで何をしているか実際に見ていきます。
https://notionthings.com/2022/03/06/auto-increment-table-row-ids/まず元の海外のページのため、その訳と実際何をしているかをみていきたいと思います。
下記は子のDBになります。

下記は親のDBになります。

自動採番のFormulaの中で何をしているのか。
参考:https://notionthings.com/2022/03/06/auto-increment-table-row-ids/
length(replaceAll(replaceAll(replaceAll(prop("Created IDs"), format(prop("Long ID")), "T"), "[^T]*$", ""), "[^,]", "")) + 1plain text上記を踏まえて、正規表現を使用して数値の取得を行なっています。
翻訳した内容の中でピンときた方もいるかもしれませんが、簡潔にまとめると下記のようなことです。
ほぼ参考サイトの日本語訳と解説になりますが、次章でこれを当番制のDBにつなげていきます。
当番制のDBを作成するために
上記の内容をテンプレートの中に入れ込むことで、当番制が実現できるのではないかと考えました。
上記で解説したAuto incrementを用いて作成してみました。

問題点

繰り返し機能を使用した際には、リファレーションの紐付けが外れてしまいます。 都度、新しいページを作成する必要があります。

妥協点として

同じページに妥協した当番表も作成しました。 このページの問題点は
さいごに
結果として、求めていた当番制のDBを作成することはできませんでした。
ただ、このようなDB自体求めている方は少なくないのではないか?と考えております。
この内容を見て博識な方が改良し、僕らが求めていた「当番制のDB」を作成してくれる方がいないか?その意味を込めて今回はこの記事を作成させていただきました。
もしくはNotionのアップデートでFormulaがアップデートされることを期待しています。
明日は、「さみー@クリエイティブディレクター 」さんの記事です!お楽しみに!