Notionの関数を使って「期限が過ぎたデータを抽出して表示」させる #notion

2022.08.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

データアナリティクス事業本部 サービスソリューション部 サービス開発チームの しんや です。

Notionでは「関数」の仕組みを使って、様々な表示、加工、制御を行うことが出来ます。

今回、「データベーステーブル上にあるデータの日付の情報を判定→定めた有効期限を過ぎたデータに対してアラートメッセージを表示→条件に合致するデータだけ表示させる」という要件を満たしたものを作りたいと思い、1つの解法をまとめることが出来たので備忘録として紹介したいと思います。

やりたいこと

  • データベーステーブル上の日付情報の値を判定し、任意の条件を満たす場合にアラートメッセージを表示させたい。
    • 今回の条件は「データベーステーブルの対象項目(日付情報)の値が、任意の期限日からの残り日数以下の日数となった場合」。(今回は「有効期限まで残り30日を切った場合」としました)
  • 対象データベーステーブルのデータ全てでは無く、条件を満たすデータのみを抽出させた形で表示させたい。

作ったもの

上記要件を踏まえて、データベーステーブルとデータベースビューを用意する形で作ってみました。「期限ステータス」の欄に、条件合致した場合メッセージを出しています。

実践内容

まずは対象となるデータベーステーブルを用意。判定基準に「本日」を使いたかったのでnow()を使った項目を用意しました。

「期限まであと何日」という数値を取るために、レコードにおける有効期限日(これはレコード毎に異なる想定)、そして関数プロパティとして「本日時点での有効期限日までの日数を求める」条件をもつ項目を作成しました。

dateBetween(prop("有効期限日"), prop("今日"), "days")

結果を判定した上で条件に合致した場合にメッセージを出す部分。ここも関数プロパティで項目を作成しています。30日を切った場合、所定のメッセージを出すという構成です。(※本当はこの部分、メッセージ自体も赤字表記とかしたかったのですが/数式を活用する事で通常ページ内であれば実現出来るのですが、関数内ではどうやら出来ないっぽい?もし「こういう風に書けば行けるよ!」とかあれば教えてください。)

if(prop("残日数") < 30, "?有効期限が残り30日を切っています。", "")

条件合致したレコードだけ出す方はデータベースビューを使っています。上記で作成したデータベースを参照する形です。

ビューではフィルタを用い、残日数が30日未満のレコードのみ絞り込み表示させる形にしています。

まとめ

という訳で、「Notionデータベースのデータについて、有効期限日を過ぎたものをアラートメッセージ付きで絞り込み表示させる」実装の紹介でした。

Notion関数には、アイデアしだいで色々な(事が実現出来る)可能性が秘められていると思います。深堀りして色々実現出来るようになっておきたいですね。