今週の未完了タスク一覧をメール送信するオートメーション: Notion Tips (177)

はじめに

Notion Tips の第177回目は、今週の未完了タスクをメール送信するオートメーションを解説します。こちらもネタ元はこちらの Notion API を触ってみようの会からです。

本編終了後に、Haruki さんが未消化タスクの通知を GAS で作成しているとのことでした。日付が決まっている未消化のタスク一覧を取得し、Gmail に HTML メールで送信してくれるものです。かなり見た目もこだわっていていい感じです。

その後、あさぎさんのメール通知を数式で書いているのを見つけました。これを見て、なんとかタスク通知もオートメーションだけで実現できないかとあがいた記録です。

ただし、実際にはもう一つの iOS オートメーションも必要でした。今回は、その作成記録です。

Mail trigger データベースの作成

今回は、Mail trigger データベースを作成します。このデータベースにページが追加された時に、オートメーションが発火します。ここではすでに今日のメールを送信済なので、一つだけページが作成されています。送信が終わってしまえばゴミページなので、適当なタイミングで全て消します。

Mail trigger データベース

プロパティは以下の通りです。

  • 名前: 意味はありません。送信が終わると「送信済」となります。
  • map: 日付を設定したらスプリントを自動設定するオートメーション: Notion Tips (164) - hkob’s blog で作成した 全てのスプリントを保持した以下のようなデータベースへのリレーションです。ここには all というページのみが存在しています。過去のスプリントは参照しないので、現在・次・将来のスプリントだけが登録されています。なお、このリレーションは片方向のみとしています。all への参照ができればいいだけだからです。

    map データベース

  • date: 作成された日付が入ります。

  • week_id: date からスプリントの名前を検索するための週番号を計算します。UTC で計算するため、9時間のオフセットを加算しています。こうしないと月曜日の9時前のタスクが前のスプリントに入ってしまうためです。

    week_id の数式

      prop("date").dateAdd(9, "hours").formatDate("GGGG-WW")
    

オートメーションの作成

オートメーションはこの Mail trigger に設定します。

作成したオートメーション

このオートメーションのトリガはページを追加とします。アクションの最初は、プロパティの値を適切に設定することです。map を all に設定し、日付を「トリガーされた日付」とします。これによって week_id が週番号として計算されます。

トリガーとアクション前半

その後、これらの情報からメールを送信します。送信元(Gmail)、送信先(Gmail以外も可)、件名は適当に設定します。

アクション後半

メッセージは数式で作成します。かなり複雑ですが、追っていけば十分理解できる内容かと思います。下のテキストは少し読みやすいように改行を追加してみました。

メッセージ作成のための数式

lets(
    sprint,
      prop("トリガーページ").prop("map")
        .first()
        .prop("Sprints")
        .filter(current.prop("week_id") == prop("トリガーページ").prop("week_id"))
        .first(),
    tasks,
        sprint.prop("Tasks")
            .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")
)

手動検証

自動化の前に手動でページを作成して、オートメーションの動作を確認してみます。実際に動かしてみた例を X にポストしました。個人で使う分にはこれでも十分です。必要に応じてリンクをクリックすると、そのページに飛ぶことができます。

繰り返しテンプレートでの検証 → 失敗

前に繰り返しテンプレートでページ作成時にオートメーションが起動するのではと検証した気がするのですが、実際にはオートメーションで作成されたページでは、オートメーションは発動しませんでした。ということで、全てを Notion で完結することはできませんでした。

iOS オートメーションでの検証

ページの作成さえできればいいので、 iOS のショートカットアプリで、時刻トリガでページ作成を行いました。適当な時刻で試したところ、無事メール送信されたことを確認しました。

iOS Automation

おわりに

これで毎日 7:30 に今週分の未完了タスクが送信されることになります。Notion だけでも十分なタスク一覧の送付ができることが確認できました。俯瞰して少し先の予定まで確認できるのはやはり便利ですね。

hkob.notion.site