ADVERTISEMENT

【Notion】Notionで期限までの日数を表示したい時の数式設定

【Notion】Notionで期限までの日数を表示したい時の数式設定
🛡️ 超解決

Notionのデータベースでタスクやプロジェクトの期限管理をしていると、各アイテムの残り日数を自動表示したい場面がよくあります。手動で計算するのは非効率であり、チームで共有する場合もリアルタイムな更新が必要です。Notionの数式プロパティを使えば、締切日と現在日付の差を日数で算出し、残り日数を動的に表示できます。本記事では、その数式の書き方から応用テクニック、よくあるトラブルとその回避方法までを実務レベルで解説します。

【要点】この記事で確認すること

  • 最初に見る場所: データベースに「日付」プロパティと「数式」プロパティが正しく追加されているか確認します。
  • 切り分けの軸: 数式の記述ミス(プロパティ名、関数名)、日付プロパティの形式(日付のみか日時か)、日付が空の場合の例外処理です。
  • 注意点: 会社の共有データベースで数式を変更する場合は、他のメンバーの表示に影響が出ないよう先にテスト用ビューを作成してから編集してください。

ADVERTISEMENT

1. 残り日数を表示するための準備

まず、Notionのデータベースに必要なプロパティを用意します。最低限、「締切」という名前の日付プロパティと、結果を表示する「数式」プロパティが必要です。

1.1 日付プロパティの追加

データベースの右上にある「プロパティを追加」から「日付」を選び、プロパティ名を「締切」とします。すでに別の名前で日付プロパティがある場合は、その名前を後述の数式で使用します。日付のみか日時かは問いませんが、日時(タイムスタンプ)の場合、時間の違いで日数の計算結果が±1日ずれる可能性があるため注意してください。

1.2 数式プロパティの追加

同じく「プロパティを追加」から「数式」を選び、プロパティ名を「残り日数」などにします。数式は後ほど編集しますが、まずはこの2つのプロパティがデータベース内に存在していることを確認してください。もし「締切」プロパティの値が空の行があると、数式がエラーになることがあります。その対策は後述します。

お探しの解決策が見つからない場合は、こちらの「Notionトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

2. 基本の数式:dateBetween関数を使う

Notionの数式で日数の差を求めるには、dateBetween関数を使用します。この関数は開始日と終了日、および単位(“days”など)を引数に取り、その差を返します。

2.1 単純な残り日数(締切日 – 今日)

以下の数式は、本日から締切日までの残り日数を計算します。ただし、締切日が過去の場合はマイナス値になります。

dateBetween(prop("締切"), now(), "days")

ここでnow()は現在日時を返す関数です。日付だけで比較したい場合は、now()の代わりにtoday()を使うこともできます。ただし、today()はNotionの関数として存在しないため、代わりにformatDate(now(), "YYYY-MM-DD")を日付に変換するなどの工夫が必要です。しかし一般的にはnow()で十分です。

2.2 開始日からの経過日数や残り日数を計算する場合

開始日と締切日の両方がある場合は、dateBetweenの第一引数を開始日、第二引数を締切日とすることで日数を求められます。例えば、タスクの経過日数を表示したい場合はdateBetween(now(), prop("開始日"), "days")とします。

使用シーン 数式例 結果の意味
残り日数(現在日基準) dateBetween(prop("締切"), now(), "days") 正:残り日数、負:経過日数
経過日数(開始日基準) dateBetween(now(), prop("開始日"), "days") 正:経過日数、負:まだ開始前
期間の日数(開始~締切) dateBetween(prop("締切"), prop("開始日"), "days") 常に正の日数

3. 表示をわかりやすくカスタマイズする数式

単純な数字では見づらいため、文字列と組み合わせたり、条件分岐で表示を変えたりすると実用的です。以下に代表的な応用例を紹介します。

3.1 残り日数を「あとX日」と表示

文字列連結には+演算子を使います。以下の数式は、数字の後ろに「日」を付けて表示します。

dateBetween(prop("締切"), now(), "days") + "日"

これにより、例えば「3日」のように表示されます。ただし、締切が過ぎると「-2日」となるため、その場合は「経過日数:2日」などに変換するほうが親切です。

3.2 条件分岐でマイナスを回避する

締切が過ぎた場合に「終了」や「期限切れ」と表示したい場合は、if関数を使います。

if(dateBetween(prop("締切"), now(), "days") < 0, "期限切れ", dateBetween(prop("締切"), now(), "days") + "日")

同様に、残り日数が0のときは「本日」と表示することも可能です。

3.3 絵文字を使って視覚的に伝える

数式内で絵文字を直接入力できます。例えば、残り日数が3日以内なら🔴、1週間以内なら🟡、それ以上なら🟢といった具合です。以下の数式で実現できます。

if(dateBetween(prop("締切"), now(), "days") <= 3, "🔴", if(dateBetween(prop("締切"), now(), "days") <= 7, "🟡", "🟢")) + " " + dateBetween(prop("締切"), now(), "days") + "日"

ただし、絵文字の後ろに半角スペースを入れて見やすくしています。

4. 数式設定の具体的な手順(5ステップ)

ここでは、基本的な残り日数表示を設定する手順を順を追って説明します。

  1. 日付プロパティを追加する:データベースのプロパティ追加ボタンから「日付」を選び、名前を「締切」にします。必要に応じて開始日も追加します。
  2. 数式プロパティを追加する:「プロパティを追加」→「数式」を選択し、名前を「残り日数」にします。
  3. 数式を編集する:作成した「残り日数」プロパティをクリックし、数式エディタを開きます。先ほどの基本数式dateBetween(prop("締切"), now(), "days")を入力します。
  4. 動作を確認する:各行に表示された数値が正しいか確認します。締切日を変更して動的に変わるかテストします。
  5. カスタマイズする:必要に応じて、文字列や条件分岐を追加します。特に空の日付対策として、empty(prop("締切"))で判定を入れるとエラーが防げます。

5. よくある失敗パターンとトラブルシューティング

数式が正しく動作しない原因はいくつかあります。代表的なものを見ていきましょう。

5.1 プロパティ名の誤り

数式内のprop()に指定するプロパティ名が実際の名前と一字一句一致していないと、エラーになります。大文字小文字も区別されます。日本語名の場合は全角半角にも注意してください。確認方法としては、数式エディタにプロパティ名を入力する際に、プルダウンで補完される候補を選ぶと確実です。

5.2 日付プロパティが空の場合のエラー

日付が入力されていない行があると、dateBetweenの引数が不正となり、数式全体がエラー(#ERROR)を返します。これを防ぐには、事前に空チェックを入れます。

if(empty(prop("締切")), "未設定", dateBetween(prop("締切"), now(), "days"))

このようにすれば、空の場合は「未設定」と表示され、エラーを回避できます。

5.3 日時プロパティのタイムゾーン差

日付プロパティが「日時」形式の場合、時刻の差が影響して日数計算がずれることがあります。例えば、締切日が「2025-03-20 00:00」、現在が「2025-03-20 23:00」の場合、dateBetweenは整数日で計算するため、結果が「0」になります。「残り0日」として表示したい場合には問題ありませんが、「残り1日」としたい場合は、now()の代わりにendDate(now(), "days")のような丸め処理を検討する必要があります。ただし、Notionの標準関数では直接的な丸めは難しいため、formatDateを利用する方法もあります。

5.4 数式が自動更新されないように見える

Notionの数式はデータベースを開いたタイミングやプロパティが変更されたタイミングで再計算されます。ブラウザをリロードしても値が変わらない場合は、締切日が正しく設定されているか、数式に誤りがないかを再確認してください。特にnow()は開くたびに現在時刻を取得するため、日付が変われば結果も変わります。

6. 管理者の方へ確認していただきたいこと

会社の共有データベースでこの数式を導入する際、管理者が把握すべきポイントをいくつか挙げます。

  • 数式の変更権限:数式プロパティは編集権限があるメンバーなら誰でも変更できます。意図しない変更を防ぐため、データベースの編集権限を特定のグループに制限することを検討してください。
  • テンプレートとしての展開:他のデータベースに同じ数式を適用したい場合は、プロパティをコピーして貼り付けるか、データベーステンプレートとして保存すると効率的です。
  • パフォーマンスへの影響:大量の行があるデータベースで複雑な数式を使うと、読み込みが遅くなる可能性があります。シンプルな数式を心がけてください。
  • 日付プロパティの標準化:チーム全体で共通のプロパティ名(例:「締切」「期限日」)を使うと、数式の共有や保守が容易になります。

7. よくある質問(FAQ)

Q1. 残り日数が「0日」の場合に非表示にできますか?

数式の結果を空文字にすることはできませんが、ifを使って「0日」の代わりに「本日」などの文字列を表示することは可能です。非表示にしたい場合は、ビューのフィルターで「残り日数が空でない」などと設定して行自体を隠す方法があります。

Q2. 土日や祝日を除いた営業日数で計算したいのですが?

Notionの標準関数では営業日を計算する関数はありません。外部サービスやスクリプト(Notion APIなど)を使う必要があります。または、日数表示のみで簡易的に運用し、土日を手動で調整する方法もあります。

Q3. 開始日からの経過日数を「○日目」と表示したい。

開始日がある場合、dateBetween(prop("開始日"), now(), "days")で経過日数が得られます。それに1を足して「○日目」と表示するには、(dateBetween(prop("開始日"), now(), "days") + 1) + "日目"とします。ただし、開始日が未来の場合は0以下になるため、条件分岐で「未開始」と表示するなど調整が必要です。

Q4. 週単位(残り○週)で表示するには?

dateBetweenの単位を”weeks”に変更すると、週単位の差が得られます。ただし小数点以下は切り捨てられるため、残り日数を7で割って自分で丸めることもできます。例:round(dateBetween(prop("締切"), now(), "days") / 7) + "週"

Q5. 数式の結果が「#ERROR」になります。どうすれば?

考えられる原因は、プロパティ名の不一致、日付プロパティが空、または日付の形式が不正です。まずはシンプルな数式1+1が動くか確認することで、数式プロパティ自体の問題か切り分けられます。次にnow()が正しく値を返すか、prop("締切")が赤字で表示されないかをチェックします。

まとめ

Notionの数式プロパティを活用することで、期限までの残り日数を自動計算し、タスク管理の効率を高められます。基本のdateBetween関数を使い、必要に応じて条件分岐や絵文字を組み合わせると、視覚的にも分かりやすい表示が可能です。プロパティ名の正確さや空値への対策など、トラブルを事前に防ぐ設定を心がけてください。また、共有データベースで使う場合は管理者の協力を得て、チーム全体で統一したルールを運用するとよいでしょう。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

🧩
Notionトラブル完全解決データベース 共有、権限、データベース、Notion AI、インポートで止まる問題を横断的に確認できます。

ADVERTISEMENT