Formula(関数)である日付までの日数を計算する
概要
会社や団体など、複数人でNotionのワークスペースを利用している場合、メンバーの誕生日を祝いたいこともあるかもしれません。ですが以下のような点から、Notionデータベースでの管理に踏み出せないことがあります。
- 日付は良くても、年齢(生まれた年)は他の人に開示したくない
- だがNotionの日付プロパティには必ず年も入力が必要
- 日付だけで管理するにしても、毎年のように次の年の誕生日に更新するのが面倒
この関数なら、上記の課題をクリアして誕生日までの日数だけを表示させることが可能です。
(toNumber(formatDate(prop("誕生日(1900年固定)"), "DDD")) - toNumber(formatDate(now(), "DDD")) == 0) ? "誕生日🎂" : (if(toNumber(formatDate(prop("誕生日(1900年固定)"), "DDD")) - toNumber(formatDate(now(), "DDD")) < 0, format(toNumber(formatDate(prop("誕生日(1900年固定)"), "DDD")) + 365 - toNumber(formatDate(now(), "DDD"))), format(toNumber(formatDate(prop("誕生日(1900年固定)"), "DDD")) - toNumber(formatDate(now(), "DDD")))) + "日後")
Tips:誕生日以外でも、特定の日付プロパティに入力された日付に対してなら何でも計算可能です。
詳細
先に挙げたような課題点を、この関数では生まれ年をすべて「1900年」で統一して入力することで回避しています。対象者の生まれ年によっては、「1950年」や「1980年」など、ほかの年で統一してもOKです。
課題点 | 解決 👍 |
---|---|
日付は良くても、年齢(生まれた年)は他の人に開示したくない | 全員同じ年を入力するので、年齢はバレない |
だがNotionの日付プロパティには必ず年も入力が必要 | 誰の生まれ年でもない年で統一すればOK |
日付だけで管理するにしても、毎年のように次の年の誕生日に更新するのが面倒 | 年を統一していれば、毎年の管理は不要 |
(toNumber(formatDate(prop("誕生日(1900年固定)"), "DDD")) - toNumber(formatDate(now(), "DDD")) == 0) ? "誕生日🎂" : (if(toNumber(formatDate(prop("誕生日(1900年固定)"), "DDD")) - toNumber(formatDate(now(), "DDD")) < 0, format(toNumber(formatDate(prop("誕生日(1900年固定)"), "DDD")) + 365 - toNumber(formatDate(now(), "DDD"))), format(toNumber(formatDate(prop("誕生日(1900年固定)"), "DDD")) - toNumber(formatDate(now(), "DDD")))) + "日後")
この関数は、誕生日(1900年固定)
プロパティに入力された日付を基に、今日が誕生日かどうか、または誕生日が何日後かを計算します。当日が誕生日の場合、以下ようにバースデーケーキの絵文字が付いた表示となります。
関数の各パートでは、以下のような計算が実行されています。
部品 | 説明 |
---|---|
formatDate(prop("誕生日(1900年固定)"), "DDD") | "DDD"フォーマットで「誕生日(1900年固定)」プロパティの日数を表します |
formatDate(now(), "DDD") | "DDD"フォーマットで今日の日数を表します |
toNumber(formatDate(prop("誕生日(1900年固定)"), "DDD")) - toNumber(formatDate(now(), "DDD")) | 「誕生日(1900年固定)」プロパティと今日の日数の差を計算します |
toNumber(formatDate(prop("誕生日(1900年固定)"), "DDD")) - toNumber(formatDate(now(), "DDD")) == 0 | 「誕生日(1900年固定)」プロパティと今日の日数が同じ場合に「True」を返します |
toNumber(formatDate(prop("誕生日(1900年固定)"), "DDD")) - toNumber(formatDate(now(), "DDD")) < 0 | 「誕生日(1900年固定)」プロパティが今日より前の場合に「True」を返します |
format(toNumber(formatDate(prop("誕生日(1900年固定)"), "DDD")) + 365 - toNumber(formatDate(now(), "DDD"))) | 「誕生日(1900年固定)」プロパティから365日を加算して、今日の日数を引いた結果を表示します |
format(toNumber(formatDate(prop("誕生日(1900年固定)"), "DDD")) - toNumber(formatDate(now(), "DDD"))) | 「誕生日(1900年固定)」プロパティから今日の日数を引いた結果を表示します |
(...) ? "誕生日🎂" : (...) + "日後" | 「(...)」には、前の計算によって算出された日数が入ります。「True」の場合は、「誕生日🎂」を、「False」の場合は「日後」を追加します |
Notion AIに関数の解説を依頼することができます。使われている各種関数機能(formatDate()
, toNumber()
など)についてはこちらの記事でも詳しく解説しているので、併せてご参照ください。