0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

あまねAdvent Calendar 2022

Day 14

NotionのDatabaseでID列を作って自動採番(auto increment/オートインクリメント)を実現する

Posted at

Notionでデータベースを作成したときに、下記のようにNewで新しい行を追加したときにID列のを自動採番したかったのですが、やり方がわかりづらかったのでその手順と仕組を紹介します。
スクリーンショット 2022-12-14 23.27.49.png

こちらのページをそのまま使わせていただきました。

NotionのDatabaseで自動採番列を作る方法

Notionのデータベースのデフォルトの機能では自動採番がまだ実装されていないようで、少し複雑な処理を自分で作る必要があります。

1. テーブルを作成する

まずは対象となるデータベースを作成して、最初にLong ID列を用意します。今回はSampleという名前のテーブルを作成しました。
Formulaでid()を返すように設定しておきます。

スクリーンショット 2022-12-14 23.49.45.png

2. 親となる別のテーブルを用意する

1.で作成したテーブルとは別に、参照用の親テーブルを作成します。
今回はMasterという名前で作成しました。そのテーブルに同じくMasterという名前のレコードを1つだけ作成しておきます。

スクリーンショット 2022-12-15 0.16.28.png

3. 親へのRelationを設定する

SampleテーブルのPropertyでMasterへのRelationを双方向で作成します。
こちらのスクショの後に、Show on MasterプロパティをONにしてください。

スクリーンショット 2022-12-14 23.35.03.png

4. テーブルのFilterで親テーブルのレコード名を設定する

スクリーンショット 2022-12-14 23.57.49.png

5. 親テーブルのCreated IDs Rollup列を作成する

MasterテーブルにCreated IDs Rollupという名前の列を作り、SampleテーブルのLong IDを参照する列を作ります

スクリーンショット 2022-12-15 0.06.24.png

6. 親テーブルにCreated IDs列を作ってCreated IDs Rollup列を参照するようにする

スクリーンショット 2022-12-15 0.07.35.png

7. 親テーブルのCreated IDsをRollupして参照する列を追加

スクリーンショット 2022-12-15 0.08.46.png

8. テーブルのID列下記のFormulaを入力する

length(replaceAll(replaceAll(replaceAll(prop("Created IDs"), format(prop("Long ID")), "T"), "[^T]*$", ""), "[^,]", "")) + 1

スクリーンショット 2022-12-15 0.09.20.png

これでできるようになったはずです。

解説

親テーブルと対象となるテーブルでIDをRollupして通すことにより、全レコードのIDが連続して取得できます。
それに対して、自分自身のLongID以降のIDを削除し、区切り文字であるカンマの数を数えることで自動採番を実現しています。

参考

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?