はじめに
Notion Tips の第131回目は私が毎日利用しているタスクの時間管理 Automation を解説します。以前は、開始時間と終了時間を別に管理していましたが、今回の Automation のアップデートで時間範囲が設定できるようになりました。今日はまず実際に利用する時間記録の部分の Automation を紹介し、明日既存データの修正 Automation を解説します。既存データが全部日付範囲に変更できたら、終了時刻プロパティを削除します。
変更前の Automation
変更前の Automation については、以下の記事で解説しています。
要約すると以下のようになります。
- Set start time Automation
- Status が To Do の状態で Next Action チェックボックスがチェックされた時
- Finish date をクリア
- Start date を「今」に設定
- Status を「In Progress」に設定
- Status が To Do の状態で Next Action チェックボックスがチェックされた時
- Set end time Automation
- Status が In Progress の状態で Next Action チェックボックスのチェックが外された時
- Finish date を「今」に設定
- Status を「Done」に設定
- Status が In Progress の状態で Next Action チェックボックスのチェックが外された時
さらに、作業中は Finish time が確定しないので、以下のような数式で _finishTime という数式を用意していました。Finish date がある場合、もともと日付範囲がある場合、終了時刻が設定されていない場合に適切な終了時刻が設定されるようにしていたものです。
lets( sd, prop("Start date"), fd, prop("Finish date"), hhmm, sd.formatDate("HHmm"), ifs( fd.empty().not(), fd, sd.empty() or hhmm == "0000", sd, sd.dateEnd() == sd.dateStart(), now(), sd.dateEnd() ) )
これらの問題は Automation で終了時刻が設定できないことに起因していました。
- カレンダーから設定すると日付範囲になる
- Automation では日付範囲を設定できないので、開始時刻と終了時刻は別プロパティにする必要がある
- タスク実行中は終了時刻がないので、仕方なく現在時刻を設定しておく
Notion のタイムラインビューでは、開始時刻・終了時刻が別プロパティでも表示が可能だったため、開始時刻は Start date、終了時刻は上の数式で作成した _finishTime を使っていました。ただし、後者は Formula なので日付を変更することはできませんでした。
Notion Calendar でも日付範囲を設定したいため、NotionCalendarDate という Formula を以下のように設定していました。
prop("Start date").dateRange(prop("_finishTime"))
Notion Calendar にはカレンダー設定のための「Tasks」のカレンダーだけでなく、この Formula を使った表示専用の CalendarViewOnly というビューを別途用意する必要がありました。

Automation の制限のために、これだけ余計なプロパティがそれぞれのタスクに設定されてしまっていたため、データベースが非常に重くなっていました。
Automation with Formula による改修
そこで今回の Formula 付きの Automation の登場です。まず、Set start time は以下のようになっています。これまで Start date の部分が「今」になっていました。この部分が数式になっています。

数式は以下のようになっています。トリガーに関する値やページの作成者をプロパティとして、ここから情報を取得することができます。特にトリガーページからアクセスすると、このページ内のプロパティには全てアクセスできます。

数式は以下のように設定しました。Formula と違ってコピー & ペーストでプロパティ名が展開されないようなので、手動で prop("") の表記を追加しています。数式で dateRange が設定できるので、すでにカレンダーで終了時刻が設定されている場合には、開始時刻だけを差し替えることができています。これは嬉しいですね。
lets(start_date, prop("トリガーページ").prop("Start date"), end_date, start_date.empty() ? prop("トリガーされた値") : start_date.dateEnd(), prop("トリガーされた時間").dateRange(end_date))
同様に Set end time は以下のようになります。こちらも Start date の部分が数式になっています。

数式は以下のようになっています。こちらは簡単ですね。

終了時刻をトリガーされた時間にするだけの簡単なものです。
prop("トリガーページ").prop("Start date").dateRange(prop("トリガーされた時間"))
動作確認
実際に動作の様子を X に動画でポストしています。うまく動いているようです。
すでに何人かの方が紹介されていますが、Automation で終了日が設定できるようになったのが一番嬉しい。#Notion #notiontwt pic.twitter.com/LgABBU1lDr
— hkob|Notion Ambassador (@hkob) 2024年10月29日
おわりに
今回は、チェックボックスのオン・オフでタスクの開始・終了時刻を記録するオートメーションの改修について説明しました。現在はまだ Start date というプロパティ名ですが、全てのデータの正規化が完了したら単なる Date という名前に戻そうと思います。明日はその正規化のためのオートメーションを解説します。