
とある制作をしたくて、Notionのデータベース内にあるページに、ランダムな数字(乱数)を付与する方法はないかと調べていました。今回は
(理解が足りないので)
くわしい解説は割愛し、いくつかの生成案を生み出したサイト記事を紹介させていただきます。
前置き
ランダムな数字(乱数)の生成と言っても、各サイト記事で紹介されているのは大きく分けて「静的」なものと「動的」なものがありました。実現したい内容によって異なると思いますので、前提を定義しておきます。
共通定義
データベースの各ページに、数式プロパティを追加。そのプロパティに対して、生成した乱数を表示。
静的
何回更新しても変動しない固定乱数
- ページ追加のたびに生成される乱数を基に、何らかのマスターデータとマッピングした結果を返す、とか
動的
時間が経って更新すれば変わる変動乱数
- 既存マスターデータから毎度ランダムに1件表示する、とか
ざっくりと調査した結果、だいたい手法は同じでした。ただ、算出するための計算式が微妙に違います。理解が追い付いていない部分があり、雑な解釈ですが、生成乱数の一意性やランダム性、数値範囲、そして作者の思想や好みも含まれているのかなと思います。
🌄静的(ページIDから算出のみ)
肝になるのはページIDです。Notionの各ページには、以下のような一意のページIDが割り振られています。
2b7561e8f08c4572a758e420149c8428 (適当)
これは16進数(0-9までの数字と、a-fまでのアルファベットの計16個で表現される数の体系)ですね。
ページIDは、数式(Formula)プロパティで関数 id()で取得できます。
すでにランダムな値ですが、Notionの数式ではこれを直接演算できないんです。"type": "string"、つまり文字列型として扱うんですね。何らかのプログラミング言語のように、10進数(0-9までの10個の数字)へ変換する関数は、Notionに備わっていません。
そこでNotion先人たちが編み出したのは、ページIDに含まれる数字だけを抜き出して、それを使うということ。
以下をベースに、ランダム性を高めたり、乱数範囲を調整したりできます。
🛎️ ここから先は有料エリアです。本記事は執筆当時の仕様に基づいており、現時点の仕様と異なる場合がありますのでご了承ください。