Kapsel
使い方料金テンプレートユースケース便利ツールブログEN
ログイン無料で始める

ブログ / リマインダー・期日・通知

公開 2026年10月23日 ・ 約10分で読めます

Notionの数式で「残り日数」「期限超過」を自動計算する実践ガイド——その先の『通知』は数式では解決しない

Notionのデータベースで数式が残り日数を計算し🟢🟡🔴で色分け・期限超過を表示するが、その値は通知の壁で止まり、壁の向こうでメールがNotionを持たない社外の相手に届く流れを表した3Dイラスト

数式は数字を変えてくれるが、誰にも知らせてはくれない。 「締切まであと何日か」を知りたくてNotionの数式を検索すると、たいていの記事は dateBetween を使った計算式で終わる。だがその式を組んだあと、多くの人が同じ壁にぶつかる——残り日数が「0」になっても、プロパティが「🔴 期限切れ」に変わっても、見ている人以外には何も届かないという壁だ。

この記事は、Notionの日付プロパティから「残り日数」「あと◯日/本日/◯日経過」「期限超過フラグ」「🔴🟡🟢の優先度色分け」をコピペで作りたい人に向けた実践ガイドだ。コピペできる数式を一通り揃えつつ、ほぼすべての解説記事が触れない「作った数式の値を、どうやって実際のリマインドに変えるか」まで踏み込む。

要点(TL;DR)

  • 残り日数の基本形は dateBetween(prop("締切日"), now(), "days")。ただし now() の時刻のせいで「0日」「1日」がズレるので、formatDate + parseDate で日付だけに揃える。
  • if() のネストで「あと◯日/本日/◯日経過」、style() と絵文字で 🔴🟡🟢 の色分けができる。empty() で日付未入力のエラーも防げる。
  • 数式は「計算」はできても「通知」は飛ばせない。 値が変わっても、本人がNotionを開くまで誰も気づかない。社外の相手には標準通知すら届かない。
  • 期日になったら自動でメール通知したいなら、判定ロジックは数式、送信は専用ツールという分業が現実解。Kapselはその送信側を担い、完了・入金済みには送らない。

目次
  • 結論——数式は『計算』はできるが『通知』は飛ばせない
  • まず動く最小構成:残り日数を出す数式(コピペ可)
  • 実用版:「あと◯日/本日/◯日経過」で出し分ける数式(コピペ可)
  • 期限超過フラグを立てる数式
  • 優先度を色分けする数式(style()・絵文字・🔴🟡🟢の3段階、コピペ可)
  • 日付未入力・完了済みタスクでの誤表示を防ぐ
  • ここまでで分かる数式の限界——『値が変わる』ことと『通知が届く』ことは別
  • 数式の計算結果を『期日になったら自動でメールが届く』運用に変える
  • まとめ:数式で判定ロジックを作り、通知は専用ツールに任せる分業
  • よくある質問(FAQ)
  • 補足・注記

結論——数式は『計算』はできるが『通知』は飛ばせない

先に結論を言い切る。Notionの数式でできるのは**「値の計算」まで**で、「誰かに知らせる」ことはできない。

残り日数も、期限超過フラグも、色分けも、すべて「プロパティの中の表示が変わる」だけだ。表示が「あと0日」や「🔴 期限切れ」に変わっても、その瞬間に通知は一切飛ばない。変化に気づくには、誰かがそのデータベースを開いて目で見る必要がある。

できること(数式の領域) できないこと(数式の外)
残り日数を自動計算する 期日が来たことを自動で知らせる
期限超過を文字・色で表示する その表示を本人以外に届ける
優先度を 🔴🟡🟢 で可視化する Notionを持たない相手に届ける
完了・未完了で表示を切り替える 「見落とし」そのものを防ぐ

つまり数式は「判定のためのロジック」としては優秀だが、「通知」とは別レイヤーの話だ。この前提を押さえた上で、まず動く数式から順に見ていく。通知の限界と解決策は記事後半でまとめる。

💡 この記事の数式は、締切日を入れた日付プロパティ(ここでは 締切日)と、進捗を表す ステータス プロパティがある前提で書いている。プロパティ名は自分のDBに合わせて置き換えてほしい。関数の細かな構文はNotionのバージョンで変わることがあるため、「このように書く」という考え方として読むとつまずきにくい。

まず動く最小構成:残り日数を出す数式(コピペ可)

最初の一歩は、締切日までの残り日数を出す式だ。これができると、各タスクの「あと何日あるか」が一覧でひと目で分かり、優先順位づけの手間が減る。

数式プロパティを追加し、次を貼る。

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

dateBetween(A, B, 単位) は A から B を引いた差を返す。ここでは「締切日 − 今」なので、締切が未来なら正の数(=残り日数)、過ぎていれば負の数になる。"days" を "hours" や "minutes" に変えれば時間単位・分単位の差も出せる。

この時点で「3」「1」「-2」のような数字が並ぶはずだ。ところが、この素の式には時刻によるズレという落とし穴がある。

時刻のズレで「0日」「1日」がおかしくなる問題と直し方

now() は「今日の日付」ではなく「今この瞬間の日時(時刻付き)」を返す。一方、日付プロパティに「時間を含める」をオフで入れた締切日は、内部的にはその日の 0時0分として扱われる。この「時刻のズレ」が、日数計算を1日ずらす原因になる。

たとえば締切が「今日」で、今が今日の15時だとする。式は「今日0時 − 今日15時」を計算し、差は マイナス15時間。これを "days" で丸めると 0(ときに締切が明日なのに「0日」)になり、「あと1日」と出てほしい場面で感覚とズレる。時刻が進むほど、この端数が結果を押し下げる。

直し方はシンプルで、now() から時刻を捨てて「日付だけ」に揃える。formatDate で一度 YYYY-MM-DD の文字列にし、parseDate で日付に戻すと、両方が「0時」基準になり端数が消える。

dateBetween(prop("締切日"), parseDate(formatDate(now(), "YYYY-MM-DD")), "days")

⚠️ 「0日」「1日多い/少ない」が出たら、ほぼこの時刻ズレが原因。締切日プロパティ側で「時間を含める」をオンにしている場合は、締切日も同じように formatDate + parseDate で日付に揃えると、両辺の基準が合って安定する。以降の式では、この「日付に揃えた残り日数」を部品として使う。

実用版:「あと◯日/本日/◯日経過」で出し分ける数式(コピペ可)

残り日数の「数字」だけだと、-3 が「3日過ぎた」のか直感的に読みにくい。if() のネストで人が読める文に変換すると、一覧を見た瞬間に状況が分かり、確認のストレスが減る。

毎回 dateBetween(...) を書くと式が長く壊れやすいので、let() で残り日数を一度だけ変数に入れて再利用する(繰り返しを減らすと後の修正が一箇所で済む)。

let(
  days, dateBetween(prop("締切日"), parseDate(formatDate(now(), "YYYY-MM-DD")), "days"),
  if(days > 0, "あと" + format(days) + "日",
    if(days == 0, "本日が締切",
      format(abs(days)) + "日経過"))
)
  • days > 0 → まだ余裕あり → "あと3日"
  • days == 0 → 今日が締切 → "本日が締切"
  • それ以外(負の数)→ 超過 → abs() で符号を外して "2日経過"

format() は数値を文字列に変換する関数で、"あと" + format(days) + "日" のように文字列と数値を連結するときに挟む。abs() は絶対値(マイナスを外す)だ。

💡 if() のネストが3段を超えると読みにくくなる。新しめのNotion数式では ifs(条件1, 値1, 条件2, 値2, …, それ以外) という多分岐の書き方も使え、同じ出し分けをより平らに書ける。どちらでも結果は同じなので、読みやすい方を選べばよい。

期限超過フラグを立てる数式

「過ぎているかどうか」だけを目立たせたいなら、超過時だけマークを出すシンプルな式が扱いやすい。超過タスクにだけ印が付くので、フィルタやソートの基準にも使え、対応すべきものが絞り込みやすくなる。

if(dateBetween(prop("締切日"), now(), "days") < 0, "⚠️ 期限超過", "")

超過していれば ⚠️ 期限超過、そうでなければ空文字 "" を返す。この数式プロパティで「期限超過を含む」フィルタをかければ、過ぎたタスクだけのビューが作れる。

残り日数の文と超過フラグを1つのプロパティにまとめるなら、先ほどの let() 版に超過マークを足すと見通しがよい。

let(
  days, dateBetween(prop("締切日"), parseDate(formatDate(now(), "YYYY-MM-DD")), "days"),
  if(days < 0, "⚠️ " + format(abs(days)) + "日経過",
    if(days == 0, "本日が締切",
      "あと" + format(days) + "日"))
)

優先度を色分けする数式(style()・絵文字・🔴🟡🟢の3段階、コピペ可)

数字や文字だけでなく色を付けると、一覧の中で危ないタスクが瞬時に目に飛び込む。色分けには「絵文字で表す方法」と「style() で文字色を変える方法」の2通りがあり、組み合わせると分かりやすい。

まず絵文字だけの3段階。残り日数に応じて信号機の色で表す。

let(
  days, dateBetween(prop("締切日"), parseDate(formatDate(now(), "YYYY-MM-DD")), "days"),
  if(days < 0, "🔴 期限切れ",
    if(days <= 3, "🟡 まもなく",
      "🟢 余裕あり"))
)
  • 🔴 … 超過(days < 0)
  • 🟡 … 締切が3日以内に迫っている(days <= 3)
  • 🟢 … まだ余裕あり

さらに文字自体に色を付けるには style() を使う。style(値, "color") のように書くと、文字色や太字を指定できる(例:style("🔴 期限切れ", "red", "b") で赤の太字)。

let(
  days, dateBetween(prop("締切日"), parseDate(formatDate(now(), "YYYY-MM-DD")), "days"),
  if(days < 0, style("🔴 期限切れ", "red", "b"),
    if(days <= 3, style("🟡 まもなく", "orange"),
      style("🟢 余裕あり", "green")))
)
段階 条件 表示 読者にとっての意味
危険 days < 0 🔴 期限切れ(赤・太字) 今すぐ対応すべきタスクが一目で分かる
注意 days <= 3 🟡 まもなく(橙) 「あと数日」を前倒しで拾える
余裕 それ以外 🟢 余裕あり(緑) 後回しにしてよいものが区別できる

💡 「3日以内」のしきい値は days <= 3 の数字を変えれば調整できる。1日前だけ注意したいなら days <= 1、1週間前から警戒したいなら days <= 7。チームや案件の性質に合わせて決めると実運用に馴染む。style() で使える色名はバージョンによって異なることがあるので、効かない色があれば別名を試すとよい。

日付未入力・完了済みタスクでの誤表示を防ぐ

ここまでの式には2つの事故要因がある。(1)締切日が空のとき と (2)すでに完了・入金済みのときだ。どちらも「対応不要なのに赤く光る」「本日締切と誤表示される」の原因になり、一覧の信頼性を落とす。先に潰しておく。

(1)日付未入力は empty() で弾く。 締切日が入っていないと計算が成立せず、意図しない表示になる。式の一番外側で空判定を入れ、空なら何も出さない。

if(empty(prop("締切日")), "",
  let(
    days, dateBetween(prop("締切日"), parseDate(formatDate(now(), "YYYY-MM-DD")), "days"),
    if(days < 0, "🔴 期限切れ",
      if(days <= 3, "🟡 まもなく", "🟢 余裕あり"))
  )
)

(2)完了・入金済みは表示から除外する。 終わったタスクに「🔴 期限切れ」が出続けると、本当に対応すべきものが埋もれる。ステータス が「完了」なら空にする分岐を足す。

if(prop("ステータス") == "完了", "",
  if(empty(prop("締切日")), "",
    let(
      days, dateBetween(prop("締切日"), parseDate(formatDate(now(), "YYYY-MM-DD")), "days"),
      if(days < 0, "🔴 期限切れ",
        if(days <= 3, "🟡 まもなく", "🟢 余裕あり"))
    )
  )
)

⚠️ この「完了は除外」という考え方は、後述の通知でも決定的に重要になる。表示上の誤りは見た目の問題で済むが、**通知で同じ事故が起きると「もう払った相手に催促メールが飛ぶ」**という取り返しのつかないトラブルになる。ステータスでの分岐は、表示段階から癖づけておくとよい。

うまくいかないときのチェックリスト

数式が思い通りに動かないときは、原因はだいたい次のどれかに当てはまる。

症状 主な原因 対処
「0日」「1日」がズレる now() の時刻が混ざっている formatDate + parseDate で日付に揃える
エラー・空白になる 締切日が未入力/型が合わない empty() で空判定を外側に入れる
完了タスクも赤いまま ステータス分岐がない prop("ステータス") == "完了" で除外
文字と数値が連結できない 数値をそのまま + している format(days) で文字列に変換
style() の色が付かない 色名・引数がバージョン非対応 別の色名を試す/絵文字方式に切替

ここまでで分かる数式の限界——『値が変わる』ことと『通知が届く』ことは別

ここまでで、残り日数・超過フラグ・色分け・事故防止まで一通り組めた。だが冒頭の結論に戻る。これらはすべて「Notionを開いて見たときに分かる」ものでしかない。

数式プロパティの値は、裏側で自動的に更新される。しかしその更新はイベントを発火しない。「🟢 余裕あり」が「🔴 期限切れ」に変わった瞬間に、メールもプッシュもSlackも飛ばない。誰かが能動的にそのビューを開いて初めて、変化に気づく。つまり色分けや超過フラグは「気づくための前提」を作るだけで、「気づかせる」仕事はしていない。Notionの数式・標準オートメーションでどこまで自動化できるかの境界は、Notion自動化でできること・できないことで表にまとめている。

Notion標準通知・メンションも「本人がNotionを開かないと気づかない」という別の限界

「数式が無理でも、Notionの通知機能やメンションで知らせればいい」と考えるかもしれない。だがここにも限界がある。Notionの @remind やメンション通知は、基本的にNotionアカウントを持つ本人への社内向け通知であり、相手がNotion(アプリやブラウザ)を見ていないと気づかれにくい。通知が来ない・届かないときの原因はNotionの通知が来ない原因と直し方で切り分けている。

社外の相手(Notionを持たない取引先・顧客)には数式も標準通知も届かない

さらに決定的なのが、社外の相手には届かないという点だ。案件はNotionで管理していても、クライアント・顧客・受講者など「Notionアカウントを持たない相手」に締切や入金期日を知らせたい場面は多い。数式の色分けはもちろん、Notionの標準通知もメンションも、Notion外の人には一通も届かない。「数式で期限超過を赤くしたのに督促が漏れる」のは、見ている人と知らせたい人がずれているからだ。

数式の計算結果を『期日になったら自動でメールが届く』運用に変える

では、数式で作った「判定」をどう「通知」につなげるか。現実的なのは、判定ロジックはNotionの数式/プロパティで作り、送信は通知専用のツールに任せるという分業だ。

数式で判定残り日数・超過・状態 条件に合う対象だけ完了・入金済みは除外 社内メンバーへメール 社外の相手へメール(ログイン不要)
図:判定は数式、送信は専用ツール。条件に合うレコードだけを社内・社外へ自動配信する分業

Kapselとは、Notionの期日・担当・ステータスを監視して、期日になったら対象の相手にメールで自動リマインドを送るツールです。数式で作った「残り日数」や「ステータス」を送信条件として使えるので、自分で作った判定ロジックをそのまま通知のトリガーに活かせる。期日になったら社外にメールを自動送信する具体的な手順はNotionの期日を自動通知する方法で解説している。

完了・入金済みには送らない事故防止、督促・定期便・差し込み変数などの実装済み機能

数式の「完了は除外」をそのまま運用に持ち込めるのが、通知ツールを使う利点だ。Kapselの実装済み機能を、読者の利益とあわせて挙げる。

機能 内容 読者にとっての意味
社外へもメール送信 Notionを持たない相手にも、ログイン不要で届く 取引先・顧客への督促漏れが消える
完了・入金済みは送らない ステータスで送信対象から自動除外 払った相手に催促が飛ぶ事故を防げる
期限超過の督促 期日を過ぎた対象に自動でリマインド 「過ぎたのに誰も気づかない」を防ぐ
対象の絞り込み 条件に合うレコードだけを配信 関係ない相手に送らずに済む
定期便 一定間隔で繰り返し送信 毎回手動で送る手間がゼロになる
差し込み変数 宛名・金額・期日などを一通ずつ自動差し込み 一件ずつ手で書き換えなくてよい
送信記録 いつ誰に送ったかを記録 「送ったか」の確認が要らなくなる
ワンクリック返信 受信者の1クリックでNotionのステータスに書き戻る 相手の返答が自動でNotionに反映される

担当者ごとの自動リマインドは担当者へのリマインドを自動化する方法、毎週・毎月の定期的な通知はNotionで繰り返しリマインダーを送る方法で、ユースケース別に整理している。

まとめ:数式で判定ロジックを作り、通知は専用ツールに任せる分業

Notionの数式は、残り日数・期限超過・優先度の色分けを自動で計算・可視化する強力な道具だ。dateBetween を軸に、時刻ズレを formatDate + parseDate で直し、if() / let() で出し分け、empty() とステータス分岐で誤表示を防げば、実運用に耐える判定ロジックが組める。

ただし数式が担えるのは「計算」までで、「通知」は別レイヤーだ。値が変わっても誰にも届かず、社外の相手には標準通知すら届かない。だから現実解は、判定は数式、送信は専用ツールという分業になる。自分で組んだ条件をそのまま送信トリガーにすれば、毎日Notionを開いて巡回する手間と、見落としによる督促漏れをまとめて減らせる。「数式の次に、実際にリマインドする方法」はNotionリマインダーの使い方ガイドに本丸をまとめているので、通知まで一気に設計したい人はそちらへ。数式そのものの逆引きはNotion数式チートシートも使える。

💡 まずは数式で判定を作り、通知が本当に必要だと分かってから送信ツールを足すのが無理のない順番。Kapselは無料プラン(¥0)から試せるので、「数式では通知が飛ばない」と気づいた段階で、小さく送信を検証できる。

よくある質問(FAQ)

Notionの数式で通知を送ることはできますか? いいえ。数式でできるのは「残り日数」や「期限超過」などの値の計算・表示までで、メールやプッシュなどの通知を送る機能はありません。値が変わっても通知は発火せず、誰かがNotionを開いて見るまで気づけません。通知したい場合は、標準オートメーションや外部の通知ツールと組み合わせる必要があります。

dateBetweenの計算がずれる(0日や1日多く出る)のはなぜですか? now() が「時刻付きの現在日時」を返し、日付プロパティは「その日の0時」として扱われるため、差に時刻の端数が混ざるからです。dateBetween(prop("締切日"), parseDate(formatDate(now(), "YYYY-MM-DD")), "days") のように now() を日付だけに揃えると、端数が消えてズレが直ります。締切日側も時刻を含む場合は、同様に揃えてください。

Notionで期限が過ぎたタスクを自動で赤くする方法は? 数式プロパティで残り日数を計算し、if(dateBetween(...) < 0, style("🔴 期限切れ", "red", "b"), "") のように、超過時だけ赤い文字や🔴を返すようにします。style() で文字色や太字を、絵文字で信号機の色分けを表現できます。ただし色が変わっても通知は飛ばないため、気づくにはビューを開く必要があります。

Notionのリマインダー機能と数式による残り日数表示の違いは何ですか? リマインダー(@remind や日付リマインダー)は設定した時刻に本人へ通知を飛ばす機能で、残り日数の数式はNotionを開いたときに見える表示を自動計算するものです。前者は「知らせる」、後者は「見せる」。数式は通知を飛ばさず、リマインダーは残り日数を計算して一覧表示することはできません。

Notionの数式で条件分岐(if文)を複数組み合わせる書き方は? if(条件, 真の値, if(条件2, ...)) のように if() をネストするか、新しめの数式では ifs(条件1, 値1, 条件2, 値2, …, それ以外) で多分岐を平らに書けます。同じ計算を何度も書くと壊れやすいので、let(変数, 値, 式) で残り日数を一度変数に入れて再利用すると、修正が一箇所で済みます。

Notionでメンション以外の方法で社外の人に締切を知らせる方法はありますか? Notionのメンションや標準通知は、基本的にNotionアカウントを持つ本人への社内向けで、Notionを使わない社外の相手には届きません。社外に届けるには、期日を監視してメールを自動送信する外部ツールを使います。Kapselはログイン不要のメールで社外にも届き、受信者のワンクリックでNotionに書き戻せます。

Notionのオートメーション機能だけで期日通知は作れますか? Notionの標準オートメーションはプロパティの自動更新などに使えますが、「期日になったら社外にメールを送る」といった外向きの通知は守備範囲外です。できること・できないことの境界はNotion自動化でできること・できないことで表にまとめています。社外への自動メールが必要なら、専用の通知ツールと組み合わせるのが現実的です。

補足・注記

  • 本記事の公開日は2026年10月23日です。記載したNotionの数式・関数(dateBetween / now() / formatDate / parseDate / if() / ifs() / let() / empty() / format() / abs() / style() 等)の挙動・構文はNotion公式ヘルプの数式リファレンスに基づきますが、Notionのアップデートにより名称・引数・対応状況が変わる場合があります。実際のデータベースで動作を確認のうえご利用ください。
  • 数式内のプロパティ名(締切日・ステータス)は説明用の例です。各自のデータベースのプロパティ名に置き換えてください。style() で指定できる色名やオプションはバージョンにより異なることがあります。
  • 一次情報の参照先はNotion公式ヘルプ(数式・リマインダー・通知に関する各ドキュメント)です。
  • Kapselの機能(期日・担当・ステータスの監視、社内外へのメール自動送信、完了・入金済みの除外、期限超過の督促、対象の絞り込み、定期便、差し込み変数、送信記録、ワンクリックでのNotion書き戻し)および料金(税込:Free ¥0/Standard ¥1,980/Pro ¥4,980)は、本記事執筆時点のものです。最新の内容は公式サイト(getkapsel.com)でご確認ください。

Notionの期日を、社内にも社外にも自動で。まずは無料プランからお試しください。

無料で始める

活用シーンを見る ・ 使い方を見る ・ 料金プランを見る

関連記事

リマインダー・期日・通知NotionとMakeでリマインダーを自動化する方法|料金と3つの壁2026年10月20日 ・ 約10分
リマインダー・期日・通知Notionで支払い管理する方法|払い忘れ・支払い遅延を防ぐDB設計と通知2026年10月6日 ・ 約11分
リマインダー・期日・通知Notionのステータス変更を自動で通知する方法|社内はSlack、社外には届かせる設計2026年10月2日 ・ 約10分
Kapsel

この記事について

Notionの通知ツール「Kapsel」が制作・運営しています。Notionの期日・担当・ステータスを監視し、Notionを使わない社外の相手にもメールで自動リマインドする個人開発のツールです。記事の内容は執筆時点の情報に基づきます。

← ブログ一覧へ · トップへ

Kapsel

Notionのデータベースから、相手へ。

プロダクト

使い方料金テンプレートブログ

便利ツール

Notion通知診断Notion数式チートシートショートカット一覧遅延損害金 計算督促メール文面生成

活用例

制作・受託・フリーランス士業スクール・講師契約更新

規約・運営

利用規約プライバシーポリシー特定商取引法に基づく表記
Not affiliated with, or endorsed by, Notion Labs, Inc.© 2026 Kapsel