![見出し画像](https://assets.st-note.com/production/uploads/images/162326491/rectangle_large_type_2_3005930d02ba300a62368f7a6d7b8bea.png?width=1200)
【Notion】DBに動的ナンバリングをしよう!
まつけんです🐰
DB中のページ管理の際に、ページのジャンルや状態でフィルタリングして、ページの抽出を行う事は多々あります。
しかし、私はある機能をNotion上で作りたいと思った際に、ページのIDが欲しいなと思いました。それも、ちゃんとDB中のページの個数(サイズ)に対してIDに空きがないようにIDを割り振る仕様です。
実は、現在簡易的に使える機能では、IDのナンバリングをできますが、ページの個数に対してIDに空きが出てきてしまいます。(これを静的ナンバリングと呼びます。)
そこで、DBにIDを動的ナンバリングする手法を実際に見つけたので、ここで紹介したいと思います!
▽ DBと機能を切り離したバージョンはこちら
プロパティにある「ID」は静的ナンバリング
![](https://assets.st-note.com/img/1731670145-JOUYEBckKoQCxTjAyXs06rdt.png?width=1200)
DBのプロパティで提供されているIDとは、静的ナンバリングをするんです…
![](https://assets.st-note.com/img/1731670420-LFcuaBt6eo9RHQKM0CzhOxfD.png?width=1200)
では、CDEを消してみると…
![](https://assets.st-note.com/img/1731670456-kDjNM2XFB3apGUbA9cdY7CSi.png?width=1200)
という感じで、ページは4つあるのに、IDが6とか7が存在するのです。もちろん、更新したところで、IDは変わりません。
そうです、静的ナンバリングされているのです。
しかも、このIDプロパティ、数値の編集できないんです。
超頑固なプロパティちゃんなのです。
私の手で、君を動的ナンバリングにしてあげましょう!
はい。という事で、動的ナンバリングに変化させたいと思います!
① まずは、IDプロパティを追加する。
![](https://assets.st-note.com/img/1731822368-8hSinOL1tMcmXaTxZ6EWYkBy.png?width=1200)
動的ナンバリングをしたいDBをここではTest DBとします。そして、説明の都合上、IDが飛び飛びになっている状況からスタートします。
※ プレフィックスはなしでお願いします。
② NumberingerというページをそのDB内に追加する。
Numberingを行うために必要なページを対象DB内に追加します!
![](https://assets.st-note.com/img/1731822529-jlGTedLm5Wigaq8VM2zOKNFu.png?width=1200)
NotionのDBはページ間の繋がりは認識できません。全てのページは独立しています。
![](https://assets.st-note.com/img/1731829135-Yi4rXz75vUastFwmoSBcxdGg.png?width=1200)
ゆえに、ページが何番目にいるのか、動的ナンバリングができません。
![](https://assets.st-note.com/img/1731829357-9PxTjD0Um5BkC6slQuoyZtFe.png?width=1200)
そこで、リレーションを行う事でお互いのページの情報を共有できるので、リレーションを用いて動的ナンバリングを行います!動的ナンバリングする機能を持たせるページとして、Numberingerを追加します!
![](https://assets.st-note.com/img/1731829462-cWgpfyuVF5zTv2EYkIdUwHR1.png?width=1200)
このページのおかげで、他のページが整列してくれるようにします。要は、Numberingerに指揮官みたいな役割を持たせます!
![](https://assets.st-note.com/img/1731829655-kWGQl940KzuAMPBSsIageNim.png?width=1200)
③ Numberingerと各ページを接続する
これはリレーションを行う事で、お互いのデータと接続します。
ここでは、Numberingerは他の全てのページの情報を知らないとナンバリングできないので、他のページと繋がりを持たせます。
また、Nubmeringer以外のページは、Numberingerからの指示通り整列すれば良い(他のデータと比較して並ぶ必要は無い)ので、Numberingerとのリレーションだけ持っていれば良いです!
![](https://assets.st-note.com/img/1731829713-KtJL4srdSvUYbzZ8Ny3OcEDg.png?width=1200)
では、リレーションします!
![](https://assets.st-note.com/img/1731822908-spq0ZtrEVIywaiXKGS3oHeAv.png?width=1200)
![](https://assets.st-note.com/img/1731822936-257ex4Q0NlcTbSXGEpnuvAi6.png)
![](https://assets.st-note.com/img/1731826808-sV9YalZvRC6pTJ7GucF2xh3U.png)
ページの繋がりというネーミングで、どのページがどのページとつながっているかを視覚化できるようにしています!
![](https://assets.st-note.com/img/1731826862-XoIUNfy6sT27AHLR4Eh5SWj0.png?width=1200)
この画面になればOKです!
つなげ方は簡単で、Numberingerのページの繋がりプロパティを選択し、
![](https://assets.st-note.com/img/1731823331-minsoU0JW7T1SwAZyg5exbpN.png?width=1200)
![](https://assets.st-note.com/img/1731823233-eak7pH3VyoOLgPIBjXKwrGQN.png)
つなげたいページをポチポチ追加しましょう!
ここでは、Numberingerが他の全てのデータとつながっているだけで良いので、
![](https://assets.st-note.com/img/1731823389-0ueC7BE83mFLfnydVsGxjcT6.png?width=1200)
こんな感じに追加できればOKです!(順番はどうでもよく、終盤で順番の替え方を教えます!)
④ 新規ページも自動でNumberingerに接続させる
この段階で新規にページを追加すると、このようにページがつながらずに新規作成されます。
![](https://assets.st-note.com/img/1731823533-sTMNyCpqOERFegdhDv4mVuk5.png?width=1200)
手動はできるだけやりたくないので、ここも自動で繋がりを持たせていきます!
![](https://assets.st-note.com/img/1731823665-qi9k2xjgJWTVSOD6hEZpMonB.png)
右上の青色新規ボタンの右側のトグルをクリックして、新規テンプレートをクリックします。
![](https://assets.st-note.com/img/1731823697-H8D23iq0Gkwxlp4Mr1P9Ih7X.png?width=1200)
新規に追加されるページは、Numberingerとつながれば良いので、このように、Numberingerとだけつながるように選択しておきます。
![](https://assets.st-note.com/img/1731823761-G21lCNgaqE3Y6dUHWo4Fc5RQ.png?width=1200)
すると、元のページに戻り、再び新規ボタンのトグルを下ろし、「タイトル」をデフォルトに設定しましょう。
![](https://assets.st-note.com/img/1731823827-ENvgWyMVip0aw9hu5r17d8x2.png)
![](https://assets.st-note.com/img/1731823860-dJSMigR3IoU82X4T6zAvwcuL.png)
![](https://assets.st-note.com/img/1731823894-GLhW9TfxnP1pdKqocy2RwSlN.png)
![](https://assets.st-note.com/img/1731823912-aKwhNVEp62PWsAeZCQSiOmkX.png)
それでは、新規ページをつくって見ると…
![](https://assets.st-note.com/img/1731823947-0cNqQB2RWgzSHMsL4DIefZ7T.png?width=1200)
※ ID 9は邪魔なのでココで消しておきます。
これで、新規に作成されるページも自動でNumberingerが認識してくれるようになりました!
![](https://assets.st-note.com/img/1731829857-ABwHDyjNeWsh35cnKJf7dozS.png?width=1200)
⑤ Numberingerに静的IDを知らせる
データとして、どのページがどのIDを持っているかを扱う必要があるので、ロールアップで、どのページがどの静的IDを持っているかをNumberingerに知らせます。
![](https://assets.st-note.com/img/1731830136-w4AQxrmbqd9aHl0BIo7kC3FS.png?width=1200)
やり方は、
![](https://assets.st-note.com/img/1731824186-P0l6Wo1HVyruJ2Yg73ITeSRt.png?width=1200)
![](https://assets.st-note.com/img/1731824348-aQXjgJ4f9nr8xwRm0eudBOUb.png)
![](https://assets.st-note.com/img/1731824366-cF6pRLA0glYabf7Uoj5q1CD3.png?width=1200)
こんな感じで、Numberingは他のページの静的IDを知ることができました!
![](https://assets.st-note.com/img/1731830861-H0Q8dDxyIATMcvsiaUunzh47.png?width=1200)
⑥ ロールアップを関数で使えるように数式に
ロールアップはリレーション先のデータを表示しているだけで、実際に扱うことができないらしいです。
そこで、ロールアップで取得したデータを数式に変換することで、関数で扱えるようにします。
![](https://assets.st-note.com/img/1731824762-2pU7MtVq31OKxWf5XhAYnRc6.png?width=1200)
![](https://assets.st-note.com/img/1731824802-F8rhf4ovVqzlUcWXuSIHgGbn.png)
![](https://assets.st-note.com/img/1731824835-jcRvA3zyd28U9VqnGSWwO7Ir.png?width=1200)
![](https://assets.st-note.com/img/1731824883-bDvHuaPkeYONL5790gAxWE1c.png)
おなじものと見えますが、実際に変換しないといけないので…
これで、数式で扱えるようになりました!
⑦ Numberingerの持つ順番リストを他のページに配布する
ここで、Numberingerの持つ順番リストを他のページに配布します!
![](https://assets.st-note.com/img/1731825188-jPlA05fnUdHMFaDrTtVJ2GqX.png?width=1200)
すると、他のページにNumberingの持っている順番リストが配布されました!
同様に、このリストを扱えるように数式で変換しておきます。
![](https://assets.st-note.com/img/1731825241-SigH2cF91QrsE3WZ8aAwlfhK.png?width=1200)
![](https://assets.st-note.com/img/1731825258-YBgNsJL3AZehd9SalKbxc4zk.png)
![](https://assets.st-note.com/img/1731830952-hob4g7EmaH85u0pslBWJSxTY.png?width=1200)
⑧ なんでこんなことをした?
ここで、なぜこのようにしたか、設計の思想を共有します。
Numberingerに各ページのIDを渡すことで、Numberinger側にIDの配列ができます。この配列がDB中のページの出席番号表のような役割を果たしてくれます!
![](https://assets.st-note.com/img/1731838927-ykYEetXW8qup5STG62cmNagh.png)
静的なIDは一意なもので、Notion側から見ると、固有の名前の様に認識されます。ですので、静的IDのリスト(名簿)を作成し、そのリストの前から何番目にそのIDがあるかで、自身が何番に並べば良いか、各ページは認識できるようになります!
![](https://assets.st-note.com/img/1731839031-tTEIQ21CWfDkzm4wUuAcFVqy.png?width=1200)
これで、下準備は完了で、いよいよ動的IDの生成です!
⑨ いざ動的ナンバリングへ!
新しく数式プロパティを追加して、動的IDという名前にします!
![](https://assets.st-note.com/img/1731825336-kuspPYVXGc6mbDe1JEMl3ogx.png?width=1200)
![](https://assets.st-note.com/img/1731825553-vYeSnm1EyijslFICgUbNhVwp.png?width=1200)
findIndex(a, b)は、aのリスト中で、bが何番目にあるのかを返す関数で、先頭は0番目と認識されます。そこで、各ページの持っている静的IDと配られた順番表を見比べて、順番表の何番目にあるのかを計算させます!
※ ここで+1している理由は、IDを1番からスタートしたいからです。+1がないとIDは0番からスタートされることになります!
![](https://assets.st-note.com/img/1731825584-Z92aBAqTHVctd5Sz1UjGxkFJ.png)
![](https://assets.st-note.com/img/1731825626-PpkQiTo1I0qYdgAnHR3uOBMf.png?width=1200)
これで、動的ナンバリングは終了です!
設計思想でも説明したように、Numberingerが持っているページの順番でナンバリングしていますので、Gが1番目、Fが2番目、Bが3番目、Aが4番目になっています。
これをいじれば、順番が勝手に変わります!(名簿の順番をいじれば動的な順番も変わる!)
![](https://assets.st-note.com/production/uploads/images/162188181/picture_pc_cfea3f93fd25353de673bf8a816ea121.gif)
もちろん、新規ページを追加したり削除したりしても、しっかり動的ナンバリングされます!(これは、ここまで到達したみなさまのお手元で演習してください!)
⑩ 整理
プロパティやNumberingerは基本的に見えて欲しくないので、非表示をさせます。
Numberingerをあえて残すようにしたい方向けの作成をしていたので、ここからはNumberingerの消し方を教えます。
![](https://assets.st-note.com/img/1731826260-E89Bq5KauOToPhiIl4Ncb6JM.png?width=1200)
Numberingerのページを開いて、ページの繋がりリレーションにNumberingerを追加します。そして順番を最上位に持ってきます。
![](https://assets.st-note.com/img/1731826374-BwhkLzfA2soP1OR9HMVvymUD.png)
![](https://assets.st-note.com/img/1731826430-u6jbnIPDrHko9cSRKslUFGt5.png?width=1200)
![](https://assets.st-note.com/img/1731826457-gUNJKIHvaMFT754DQErO3GnR.png?width=1200)
![](https://assets.st-note.com/img/1731826509-O5bnpQsrzqFNY3ZA71KHkhVI.png?width=1200)
![](https://assets.st-note.com/img/1731826539-76Dz0oypdCOjT8tm32QWbhK1.png?width=1200)
※ DB内のページを移動させてしまうと、動的IDがバラバラになります。ですので、DBの並び順を変えたい場合は、Numberingの中のリレーションにあるページ順を変更してください!(順番にとくに意味が無い場合は、並べ替えで「動的IDで並べ替えて表示」してください!)
※ ここで、フィルタを使った後に、なぜか新規ページのテンプレのリレーションがとれるので、再設定してあげてください!
終わりに
長くはなりましたが、かなりかみ砕いて、動的ナンバリングのやり方を説明しました!質問などございましたらお気軽にコメントしてください!
これは、みなさまのNotionのページを素晴らしくさせるための機能だと自負しています🤗
また、私はこの機能ともう一つの機能を開発し、それを組み合わせた面白いページの作成も行う予定です!
![](https://assets.st-note.com/img/1731896233-wauFIrEkTPhZdc5Ux8ORbfSG.png?width=1200)
よろしければ、「まつけん、なんか面白いこと考えてるんだな!」と頭の片隅で覚えていただけると幸いです!
では!良いNotionライフを!