Notionのデータベースで「毎月第2日曜日」のような繰り返しイベントを表現する
Notionのデータベースをカレンダーとして使っているとオートメーションで繰り返しイベントを作成することがある 毎日/毎週/毎月などの単純な繰り返しはテンプレート機能で実現できるが,「毎月第2日曜日」のように特定の週の特定の曜日のようは繰り返しは表現できない
運用
毎月1日にオートメーションで自動作成し,カレンダーとして使用する日付は関数で出した日付を使うようにする
複雑な条件の日付にオートメーション発火は出来ないので,あらかじめ先の予定を関数で出すように運用する
手入力の日付を使いたい場合もあるので,繰り返しフラグが無効であれば手入力の日付,有効であれば自動計算した日付を使うようにする
例
2025年1月1日にイベントをオートメーションで作成
週番号に2 (2週目),曜日番号に0 (日曜日)で第2日曜日を表す
出力のDate列は2025年2月の第2日曜日として2025年2月9日を取得できる
https://gyazo.com/66e17c1679e06d69d433ae076d77ff7f
関数で日付を出す
以下の式を適用する
code:Notion式(txt)
if(
prop("IsRecurring"),
ifs(
prop("Recurring: Type") == "monthly_week_number",
prop("Recurring: CreatedAt")
.dateAdd(1, "month")
.formatDate("YYYY-MM-01")
.parseDate()
.dateAdd(
(prop("Recurring: Week number") - 1) * 7 + (7 + prop("Recurring: Weekday") - prop("Recurring: CreatedAt").dateAdd(1, "month").formatDate("YYYY-MM-01").parseDate().formatDate("d").toNumber()) % 7,
"days"
)
),
prop("Date (Manual)")
)
汎用的に使えるように以下のようにしている
繰り返しフラグが無効であれば手入力の日付列をそのまま出力
毎月1日に翌月のイベントを作成するように1ヶ月足す