関数で特殊なIDを自動生成する

概要


企業の情報管理においては、連番日付 など、管理番号の付け方に特殊なルールがあることも少なくありません。こういった要件がある場合に、データベースのプロパティに入力された値を使って関数でIDを自動生成する方法を紹介します。



設定例


たとえば「A00001_20230930」といったように、管理番号に以下のような命名規則決まっているケースがあったとしましょう。これをNotion上で表現する方法を見ていきます。

種別を区別する文字 + 桁固定の連番 + "_" + 起票日を8桁で表現



種別をタグプロパティで作成


管理対象となるアイテム別に、その種別を表す文字列をプレフィックスとして付ける運用だとしましょう。IDプロパティを使うと、単一のデータベースでは1種類のプレフィックスしか設定することができません。ここでは、種別共通で連番を振る運用と仮定して、シンプルにセレクトプロパティで種別タグを設けます。



IDプロパティを関数で桁揃え(ゼロパディング)


次に、種別を表す文字の後ろに付ける、桁数固定の連番を作ります。


IDプロパティは、プレフィックスなしのシンプルなもので大丈夫です。


関数プロパティを作成したら、IDプロパティの値を整形するため、以下の数式を入力します。ゼロパディングの詳細については、こちらの記事をご参照ください。

substring("00000", 0, 5 - length(prop("ID"))) + prop("ID")




起票日を取るために作成日時プロパティを作成


管理番号の末尾に起票日を表す数字を入力するため、その元となる作成日時プロパティを設けます。


作成日時プロパティの表示形式はID生成の関数には影響しないため、お好みに合わせて変更して大丈夫です。



プロパティの値を関数で組み合わせる


ここまでに作成したプロパティを振り返ってみましょう。



この時点では、ID自動生成に使う以下のプロパティのうち、作成日時 だけデータ型が文字列ではなく、日付形式のままになっています。

プロパティ データ型
種別タグ 文字列
IDを5桁に修正 文字列
作成日時 日付

文字列同士は足し算 + で連結させることができますが、日付はそのままの形では連結できません。厳密にいうとできるにはできるのですが、このような日時のメンションとして表示されてしまうのです。


そのため、formatDate() 関数を使って指定の形式の文字列に直す必要があります。これらを踏まえ、ID生成用の関数プロパティに以下のような数式を入力します。

prop("種別タグ") + prop("IDを5桁に修正") + "_" + formatDate(prop("作成日時"), "YYYYMMDD")


そうすると、このように命名規則に従った特殊IDが自動生成されます。



参考:この記事では分かりやすさ重視のため、IDの桁数整形は別のプロパティで一時計算しましたが、以下のように単一の関数プロパティ内で他の計算と一緒に処理することも可能です。



Tips:他のデータベースから特殊IDで参照にする場合は、関数プロパティから値をクリップボードにコピーしてタイトルプロパティに貼り付けて利用しましょう。

記事を評価 ありがとうございます! 失敗しました