anz blog

Notionで日付プロパティの終了日でフィルタリングを行う

2022-08-29 #misc #Notion

Notionの日付プロパティで対して終了日も設定ができるので、イベントなどで開始とか終了があるようなものをまとめるときなんかに便利です。
その状態でカレンダー表示をするといい感じに表示してくれますし(語彙力)
そんな便利機能ですが、「現在開催中のイベント」のようなフィルタリングをしようと思うと一筋縄ではいきません。
今回はそこらのお話。

問題

フィルタリングをすること自体は簡単で、Filter > Add filter > 日付プロパティ の順でメニューを展開していき、いいように日付を設定していけばOkです。
たとえば、日付プロパティを選んで 日付 is on or before の条件を選んで、Select Date の方は Today と選べば、開始日が今日より以前に設定されているものでフィルタリングができます。
ただ、この状態は、開始されたというだけで、今現在すでに終了しているかどうかまでは見てくれません。
冒頭のイベントの例でいうと、「開催されたイベント」のフィルタリングであって「現在開催中のイベント」のフィルタリングにはならないのです。
とはいえ、日付プロパティに対してこれ以上拡張してフィルタリングの条件を設定することができないので、パッと見、「開催中のイベント」のようなフィルタリングはできないのか?
という事になってしまいそうですが、ちょっとした手順を踏めば出来ます。

対策

ざっくり対策の概要を書くと、
「終了日を抽出するするプロパティを新たに追加して、そのプロパティに対してフィルタリングを行う」
です。

これだけで、手順がわかったひとは以降は蛇足です。

詳しく

まずは、終了日を抽出するために新しくプロパティを追加します。
Add Property から設定するタイプは Formula(数式) を選択します。
そしてそこに設定する計算式はこんな感じです。

end(prop("日付"))

終了日プロパティの設定

※ この 日付 の部分は、開始日と終了日を設定したプロパティ名が入ります。

こう設定することで、このプロパティは日付プロパティの終了日を抽出して表示してくれるようになります(便宜的にプロパティ名は 終了日 としておきます)

そして、あとはこの終了日に対してフィルタリングを実施することで「開催中のイベント」のようなことができるようになります。
日付プロパティに対しては、日付 is on or before で該当日付をTodayに、そして終了日プロパティに対しては 終了日 is on or after で該当日付をTodayにそれぞれ設定してあげればOKです。
言葉にすると「今日が開始日(日付)以降」かつ「今日が終了日以前」ですかね。

フィルタリング設定

補足

あとから、数式プロパティを追加するぐらいなら、最初から開始日と終了日で別々プロパティをつくって、それぞれに日付設定したらいいじゃないか?と思うかもですが、
これでも単純にテーブル表示をするなら問題ないのですが、カレンダー表示をしたときに表示が大きく違ってきます。
1つの日付プロパティで、開始日と終了日を設定するとカレンダー表示にしたときに、カレンダー上で開始日の枠から終了日の枠まで線を引く感じで表示してくれるのでみやすいのです。
それが、2つの日付プロパティで全く別々で設定するとこうは表示してくれません。

蛇足

追加した終了日プロパティは、言ってしまえばフィルタリング用のプロパティでデータとして表示する必要性はない(むしろ邪魔)ので、非表示にしてしまったほうがスッキリします。

プロパティの非表示