【Notion】データベースに連番を付与する

はじめに

Notionにはデータベースという概念があり、データを様々な形式で管理することができます。

しかし、Excelのような表計算ソフトとは機能が異なるため、2023年3月の時点ではデフォルトでデータに連番を設定する方法はありません。
そのため、多くの人は手入力で番号を振っていることでしょう。

そこで今回はデータベースにデータを作成すると、データに対して自動で連番が生成されるような設定方法をご紹介します。

連番を自動生成する方法

1. まずはデータベースを作成する

以下のようにシンプルなテーブルを1つ作成し、適当にデータを何個か追加します。
新規作成せず、既存のデータベースを使用しても問題ありません。

2. 各データのIDを生成する

新規プロパティ > 関数を選択し、id() と入力します。 そうすると以下のように各データに対して固有のIDが生成されます。

3. 各IDを1つのデータとして取得する

新規プロパティ > リレーション から1で作成したデータベースを選択し、データベース自身に対するリレーションを作成します。
次に各IDを1つの文字列にまとめて処理を行いたいので、親データを1つ作成し各データを紐づけます。

新規プロパティ > ロールアップ から親データに紐づけた各IDを取得します。
Notionではロールアップした値を関数で使用することができないため、新規プロパティ > 関数 からpropを使用してロールアップで取得した値を新規プロパティとして複製してあげます。

これにより、親要素に紐づけた順番で並んだカンマ区切りのIDリストを親データ側で取得することができました。

4. IDリストを各データで使用できるようにする

NotionのDBではExcelのように別の行にある値を参照することはできないため、3で作成したIDリストを各データでも持つ必要があります。
そのため 新規プロパティ > ロールアップ から3のpropで作成した値を取得します。

こうすることで親データが持っているIDリストを各データ側でも持つことができました。

5. 取得したIDリストを使用して連番を生成する

ここまでの作業で連番を生成するための準備が整いました。
プロパティの追加 > 関数 から以下のように関数を設定します。(propの指定はご自身が登録したプロパティ名に置き換えてください)

length(replaceAll(replaceAll(replaceAll(prop("created ids"), format(prop("id")), "T"), "[^T]*$", ""), "[^,]", "")) + 1

やっていることとしては、取得したIDリストから自身のIDを文字列Tに置換し、正規表現を使用してTの後にある文字列を取り除きます。
IDリストは親データに紐づいている順番で並んでいるため、IDを取り除き区切り文字の数を数えることで、データが何番目にあるかを取得することができます。

あとは親データに対しフラグやデータ名でフィルタリングをかけたり、不要なプロパティを非表示にしてきれいにしたら完成です!

さいごに

今回は1つのデータベースに連番を付与してみました。
同じ方法で親データを別DBに作成すると、並び替えたときに可変の行番号を生成することも可能です。

ただ、データ量の多いデータベースにこの方法で連番を付与すると非常に重くなってしまうので注意してください。

最近の記事

  1. AWS
  2. AWS
  3. AWS
  4. AWS
  5. AWS

制作実績一覧

  1. Checkeys