はじめに
hkob の雑記録の第40回目は、データベースオートメーションに時刻トリガが実装されたので、iOS オートメーションに頼っていた時刻トリガをやめて、Notion のみでタスク一覧メールを実装します。
従来のタスクメール送信
現在、毎朝 7:30 に今週の未完了タスクをメールで送信しています。これまで、時刻トリガはなかったので、iOS のオートメーションで、「Mail trigger」というデータベースにページを作成し、ページ作成のトリガでオートメーションを発動していました。この仕組みは昨年の12/17 に以下のブログで記事にしています。今回は、これを時刻のトリガで実現するように作り直してみます。
時刻トリガによる実装
時刻トリガで作り直すにあたり、ネックになるのはトリガページが存在しなくなることです。トリガページが存在しないと、Task データベース自体にアクセスすることができません。このため、ページを作る処理を iOS のオートメーションから時刻トリガにすることにします。
ただ、これだけでは面白くないので、仕組み自体も作り直してみます。これまで週末になるとほとんど中身のないメールが届くようになっていました。今回、今週のタスクだけでなく、来週のタスクまで表示されるように変更したいと思います。また、オートメーションの中でメールの文面を作成していましたが、ちゃんと動いているのかの確認が難しかったので、データベースのフォーミュラで文面を作成することにしました。
1. Mail テキストの Formula 化
今回、私の Task 管理の肝である Map データベースにメールテキストの中身を作成する Mail text 数式を作成しました。

数式は以下の通りです。Current と Next の Sprint のみを取り出し、それに連結されている Tasks から完了になっていない Task のみを抽出し、日付順に並べた後で、メールテキストを作成します。これだと、上に示したように実際に送られる予定のメールテキストが表示されるので、数式の間違いがその場で確認できます。
lets( sprints, prop("Sprints").filter(["Current", "Next"].includes(current.prop("Sprint status"))), tasks, sprints.map(current.prop("Tasks")).flat().filter(current.prop("Status") != "Done").sort(current.prop("Start date")), tasks.map( [ current.prop("Start date").formatDate("YYYY-MM-DD H:mm"), current.prop("Task name").link("notion://notion.so" + (current.id())) ].join(" ") ).join("\n") )
2. 時刻トリガによるメール送信
メールの本文ができてしまえば、あとは非常に簡単です。トリガは「ごと」を選択します。駆動は毎日で朝7:30にメールを送信します。

実際のオートメーションは以下のようになりました。メール本文を Map の数式で作成してしまったので、それを取り込むだけになりました。特定のページをオートメーションから参照できると余計なページを作成しなくていいのですが、将来できるようになることを期待しましょう。

動作テスト
試しに夜21:15に時刻トリガを設定してみました。無事にメールが届きました。これで iPhone のオートメーションは削除できますね。

おわりに
時刻トリガのとっかかりとしては非常にうまくいきました。前回のものよりもスッキリしていて、他の人にも使ってもらいやすい気がします。