Notionでタスク管理を行う際、期限を過ぎたタスクを自動的に判定して視覚化したいケースは多いでしょう。手動で確認するのは非効率であり、見落としも発生しやすくなります。Notionのデータベース機能と数式プロパティを活用すれば、期限超過を自動判定する仕組みを構築できます。この記事では、実際に使える数式例を複数紹介し、実務で陥りがちな失敗パターンや注意点についても詳しく解説します。
【要点】この記事で確認すること
- 最初に見る場所: Notionデータベースの数式プロパティ設定画面。プロパティ名と関数の構文を正しく入力できているか確認します。
- 切り分けの軸: 判定結果が期待通りにならない場合、数式のデータ型(日付型か文字列型か)やタイムゾーンの影響を疑います。
- 注意点: 会社のワークスペースでは数式を編集できる権限が制限されている場合があります。管理者に依頼する前に、自分が編集可能なデータベースかどうか確認してください。
ADVERTISEMENT
目次
期限超過判定の基本数式
日付プロパティの設定
まず、タスクデータベースに「期限」という名前の日付プロパティを作成します。プロパティタイプは「日付」を選択し、日付のみを扱うか、時間も含めるかを決めます。時間まで管理する場合は「日付と時刻」を選びます。このプロパティが数式の基準になります。
基本数式例
最もシンプルな数式は、現在日時と期限を比較するものです。以下は「期限」プロパティが今日の日付より前であれば「期限超過」、そうでなければ「期限内」と表示する例です。
if(prop("期限") < now(), "期限超過", "期限内")
ただし、この数式では期限が未設定のタスクも「期限内」と判定されてしまいます。未設定のタスクは無視したい場合は、以下のように条件を追加します。
if(empty(prop("期限")), "未設定", if(prop("期限") < now(), "期限超過", "期限内"))
この数式を数式プロパティに設定すると、自動的に各タスクの状態が更新されます。データベースのビューで条件付き書式と組み合わせることで、期限超過タスクを赤色で強調するなど、視認性を高めることも可能です。
実務でよくある失敗パターンと対策
タイムゾーンのズレ
Notionのnow()関数はUTC基準で動作します。そのため、日本時間(JST、UTC+9)で運用している場合、午前9時までは「前日」と判定されることがあります。例えば、期限が「2025-03-10」で、日本時間の2025年3月10日午前8時に確認すると、now()はUTCでは2025-03-09 23:00となり、期限よりも前とみなされて「期限内」と表示されます。これを防ぐには、日付のみで比較するか、タイムゾーンを調整する数式を組み込みます。
日付のみで比較するには、dateBetween関数を使って日付の差を取得する方法があります。以下の数式は、期限の日付と今日の日付の差が0未満(つまり期限が過去)の場合に超過と判定します。
if(empty(prop("期限")), "未設定", if(dateBetween(prop("期限"), now(), "days") < 0, "期限超過", "期限内"))
この方法ではnow()は引き続きUTCですが、dateBetweenで日付単位に丸められるため、時刻のずれの影響を受けにくくなります。ただし、厳密には「今日」の定義がUTC基準になる点は変わりません。完全に日本時間で判定したい場合は、後述する応用テクニックが必要です。
数式のデータ型不一致
数式で比較する際、左辺と右辺のデータ型が合わないとエラーになるか、予期しない結果になります。例えば、prop(“期限”)が日付型、now()も日付型なので比較は可能ですが、if関数の結果が文字列型(“期限超過”など)になる点に注意してください。この出力をさらに別の数式で使う場合は、データ型を意識する必要があります。
また、prop(“期限”)が未設定(empty)の場合、比較自体がエラーになることがあります。先述のようにemptyチェックを入れて、未設定のタスクを適切に処理しましょう。
プロパティ名の誤字
数式内のプロパティ名は、実際のプロパティ名と完全に一致している必要があります。大文字小文字も区別されます。「期限」と「期日」など微妙な違いでエラーになります。数式入力中にプロパティを選択できる機能を活用し、手入力を避けるとミスが減ります。
より柔軟な判定:状況別の数式例
| 状況 | 数式例 | 説明 |
|---|---|---|
| 日付のみで判定(時間無視) | if(empty(prop("期限")), "未設定", if(formatDate(prop("期限"), "YYYY-MM-DD") < formatDate(now(), "YYYY-MM-DD"), "期限超過", "期限内")) |
文字列に変換して比較することで、時刻の影響を排除します。 |
| 日本時間(JST)で正確に判定 | let(nowJST, dateAdd(now(), 9, "hours"), if(empty(prop("期限")), "未設定", if(prop("期限") < nowJST, "期限超過", "期限内"))) |
now()に9時間加算して日本時間に補正します。時間まで含めた比較が可能です。 |
| 営業日のみ考慮(週末をスキップ) | if(empty(prop("期限")), "未設定", if(and(dateBetween(prop("期限"), now(), "days") < 0, formatDate(prop("期限"), "E") != "Sat", formatDate(prop("期限"), "E") != "Sun"), "期限超過", "期限内")) |
期限が過去かつ土日でなければ超過と判定します。簡易的な営業日判定です。 |
| 「今日が期限」も超過とみなす | if(empty(prop("期限")), "未設定", if(prop("期限") <= now(), "期限超過", "期限内")) |
<= を使うことで、当日も超過扱いにします。タスク管理のポリシーに合わせて使い分けます。 |
応用:ステータス変更やリマインダーとの連携
ステータス自動更新の自動化
数式プロパティは自動計算されるため、他のプロパティを参照してステータスを変更することはできません。しかし、Notionの「ボタン」プロパティや「データベースの自動化」(旧:リレーションのロールアップを利用したトリガー)を使えば、期限超過時にステータスを自動変更することが可能です。例えば、ボタンに「ステータスを「期限切れ」に変更する」という動作を設定し、手動実行する方法があります。完全自動化が必要な場合は、Notion APIや外部サービス(Zapier、Makeなど)を検討するとよいでしょう。
リマインダー設定
Notionのデータベース自体にはリマインダー機能はありませんが、カレンダービューと連携してGoogleカレンダーなどに通知を送る方法があります。または、数式で「あとX日」を表示し、その結果を基に手動でリマインダーを設定する運用も考えられます。
Notionの数式に関する設定と注意点(管理者向け)
ワークスペース設定
Notionのワークスペース設定で、数式プロパティの使用を制限することは基本的にできません。ただし、データベースの編集権限が「フルアクセス」か「編集可」でなければ、数式の追加や変更は行えません。管理者はメンバーの権限を適切に設定し、必要に応じてデータベースのテンプレートを用意すると良いでしょう。
共有と権限
データベースを共有する際、数式プロパティは自動的に計算され、結果のみが表示されます。他のユーザーが数式の中身を編集できるかは、そのユーザーがデータベースの編集権限を持っているかによります。数式をロックしたい場合は、データベースの権限を「閲覧のみ」に設定するか、数式を複製してから元のデータベースを保護する運用を検討してください。
よくある質問(FAQ)
- Q: 期限が未設定のタスクが「期限内」と表示されてしまいます。どうすればよいですか?
A: 数式にemptyチェックを追加してください。if(empty(prop(“期限”)), “未設定”, …) のように先に判定することで、未設定のタスクを明確に区別できます。 - Q: 数式をコピーして他のデータベースに貼り付けたらエラーになりました。
A: プロパティ名が貼り付け先のデータベースと一致しているか確認してください。プロパティ名はデータベースごとに異なるため、適宜修正する必要があります。 - Q: タイムゾーンの影響を完全に無視したいのですが、どうすればいいですか?
A: formatDate関数を使って日付文字列に変換して比較する方法が最も確実です。例: formatDate(prop(“期限”), “YYYY-MM-DD”) < formatDate(now(), “YYYY-MM-DD”) - Q: 数式の結果を別の数式で参照できますか?
A: はい、数式プロパティの結果は他の数式プロパティからprop()で参照できます。ただし、データ型に注意してください。文字列型で出力した場合は、後続の数式でも文字列として扱われます。 - Q: 営業日だけを考慮した判定をしたいのですが、土日以外の祝日はどう扱えますか?
A: Notionの標準機能では祝日カレンダーを自動認識できません。あらかじめ休日リストを別データベースで管理し、リレーションとロールアップを組み合わせる高度な方法か、外部APIを利用する必要があります。
まとめ
Notionで期限超過タスクを自動判定するには、数式プロパティに適切な比較ロジックを記述します。基本はnow()と期限プロパティの比較ですが、タイムゾーンや未設定の扱いなど、実務ではいくつかの調整が必要です。この記事で紹介した数式例を参考に、自社の運用に合った判定基準を設定してください。また、完全自動化には限界があるため、必要に応じてAPI連携なども検討するとよいでしょう。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Office・仕事術の人気記事ランキング
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【PDF】PDFのサムネイルプレビューが表示されない!エクスプローラーの設定とAcrobat環境設定
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【Excel】文字がセルの枠からはみ出す・隠れる!「折り返して表示」と「縮小して全体を表示」の使い分け
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
- 【Outlook】メール本文が「文字化け」して読めない!エンコード設定の変更と修復手順
