皆さん、こんにちは。
Notionユーザーの皆さんならご存じかと思いますが、Notionデータベースには、初めからIDプロパティが存在します。
しかし、削除や並び替えには対応しておらず、とても使いづらいものになっています。
削除しても欠番が発生せず、並び替えもできる番号を付けたいと思いませんか?
そこで今回は、削除や並び替えにも対応した連番IDの作成方法について紹介していきます。テンプレートも用意しましたので、「説明だけではわかりづらい」という方は、利用してみてください!

IDの作成手順は以下の通りです。
作成手順
- データベースの準備
- リレーションの作成
- 関数の作成
- 並び替え
それでは、順を追って説明していきます。
1. データベースの準備
まずは、今回使うデータベースを作成していきます。
今回は、IDを付ける「サンプルデータベース」とサンプルデータを管理する「サンプルリストデータベース」を作成しました。
サンプルデータベースはサンプルですので、皆さんはお好きなデータベースを利用してください。


2. リレーションの作成
データベースを作成したら、リレーションの作成に移ります。
サンプルリストデータベースから、新しいプロパティを作成し、相互のリレーションを追加します。
「サンプルに表示」を有効にすることで相互のリレーションにすることができます。

リレーションを作成したら、サンプルリストデータベースに1つだけアイテムを作成します。今回は、サンプルリストという名前のアイテムを作成しました。

サンプルデータベースに戻り、サンプルリストデータベースとのリレーションを確認すると、先ほど作成したアイテムが選択できるようになっています。一括操作ですべてのアイテムをサンプルリストアイテムとリンクさせましょう。


サンプルリストデータベースを確認すると、先ほどリンクしたアイテムがすべてリレーションプロパティに入っています。

3. 関数の作成
リレーションを作成したら、いよいよIDを表示していきます。
IDは関数を使って表示しますので、まずは関数プロパティを作成してください。

関数プロパティを作成したら、関数の中身を編集していきます。
関数に、以下のコードを記述してください。
※プロパティ名は利用するデータベースによって適宜変更してください
prop("サンプルリスト").at(0).prop("サンプル").findIndex(current.prop("名前") == prop("名前"))+1

関数の解説
prop(“サンプルリスト”).at(0).prop(“サンプル”)
サンプルリストアイテムからリンクされたサンプルの一覧を取得します。
findIndex(current.prop(“名前”) == prop(“名前”))+1
サンプルと名前が一致したアイテムの順番(インデックス)を取得しています。アイテムの順番(インデックス)は0から始まるので、1から始まるように1を足しています。
関数の編集後、サンプルデータベースを確認すると、しっかりと番号が振られています。

IDを表示するプロパティの列を左端に移動させると、とても見やすくなります。

4. 並び替え
それでは次に、並び替えをする方法について解説していきます。
まずは、普通にサンプルデータベースから、順番を変えてみましょう。
今回は、試しに5番のナシと6番のオレンジの間に1番のリンゴを挿入したいと思います。

この場合、1番のリンゴが移動したことにより、ナシより上にあるリストの番号が繰り上がり、リンゴの番号が5になることが期待されます。
しかし、サンプルデータベースから順番を変えるだけでは、残念ながら番号は変化していません。

そこで、サンプルリストデータベースからの並び替えを試みます。
サンプルリストアイテムのサンプルリレーション枠をクリックし、リンクされているページ一覧を開きます。


試しに、1番のリンゴと2番のバナナを入れ替えてみましょう。
変更後、リンゴが2番、バナナが1番になっていることが確認できます。



順番が分かりづらいと感じるときは、リンクされているページ一覧にIDを表示してください。
右上にある「…」マークをクリックすることで、プロパティの表示/非表示設定画面を開くことができます。IDを表示しておけば、アイテムの番号を確認しながら並び替えをすることができます。


まとめ
今回は、削除や並び替えにも対応した連番IDの作成方法について紹介しました。
毎回この手順を踏むのは面倒なので、公式で新しいプロパティが追加されることを願ってます…。


