![期限が切れたNotionタスクを毎日自動でSlackにシェアして抜け漏れをなくす](/_next/image?url=%2Fassets%2Fposts%2F2023%2F10%2Fto-report-notion-tasks-to-slack%2Fn8n-logo.jpg&w=3840&q=75)
期限が切れたNotionタスクを毎日自動でSlackにシェアして抜け漏れをなくす
関わるプロジェクトが増えてきてタスクの抜け漏れが出てきたので、Notionとn8nとSlackを使って自動化したメモ
最近 Zapier でいろんなものを自動化していたが、どうもエディタがいまいちだったり、(Beta だからしょうがないとはいえ)API リクエストがうまく行かなかったりと移行先を探していた。 数年前に n8n を認知していたが、このタイミングで思い出して使ってみると、びっくりするほど使いやすかったので早速検証として組んでみたメモ。
やりたいこと
毎日 Slack にタスクの状況を投稿して、タスクの抜け漏れをなくす。 毎日期限切れのタスクが 0 になるような働き方にする。
n8n とは
ユーザーがタスクを自動化し、異なるアプリケーションやデータソースを接続するためのフリーでオープンソースのワークフローオートメーションツール。 ノードベースのエディターを使用して、データの流れと変換を視覚的に作成および管理できる。 OSS なので(たぶん)自前でホスティングもできるし、普通にクラウドサービスもあるのでまずはクラウドサービスを使って試すとよい。
今月まで Zapier を使っていたけど、複雑なワークフローを組みたくなったので n8n に移行した。 n8n の方がプログラマフレンドリーな印象。
やったこと
![workflow](/_next/image?url=%2Fassets%2Fposts%2F2023%2F10%2Fto-report-notion-tasks-to-slack%2Fflow.png&w=3840&q=75)
- スケジューラを設定
- Notion のクエリで利用する値にフォーマット
- Notion のデータベースから該当レコードを取得
- 該当レコードから必要なデータだけに絞る
- 該当データのリストを改行で繋げて要素数を 1 にする
- 同時に該当レコードをカウント
- 該当レコードから発生したデータをマージ
- Slack に投稿
ポイントは該当レコードをそのまま Slack につなげるとレコードの数だけ Slack に投稿してしまうので(別にそれでも目的は達成できるが)、レコードを Item List ノードで 1 つに繋げてしまうこと。 正当な方法か分からないが、array reduce みたいなことがしたければ Code ノードを使ってとりあえず要素数 1 とかにしとけば次のステップで 1 要素だけ使うとかってやればいい。 最後は要素数 1 のノードを Array position で combine(どちらも要素数 1 なのでシンプルにマージされる)する。
![Join database items](/_next/image?url=%2Fassets%2Fposts%2F2023%2F10%2Fto-report-notion-tasks-to-slack%2Fjoin-items.png&w=3840&q=75)
![Count items](/_next/image?url=%2Fassets%2Fposts%2F2023%2F10%2Fto-report-notion-tasks-to-slack%2Fcount.png&w=1920&q=75)
![Combine two node](/_next/image?url=%2Fassets%2Fposts%2F2023%2F10%2Fto-report-notion-tasks-to-slack%2Fcombine.png&w=1920&q=75)
感想
コツを掴むまではもう少しかかりそうだけど、エディタがよくて柔軟性が高いので今のところ不安なし。 Zapier は速攻 downgrade したので、今後色々移行しながらまたネタがあれば追加のエントリを書く。