Zapier Tablesで重複チェックをサクッと実現する
ある日、僕はこんなことに悩んでいました。
Zapierで「任意のSlack投稿に特定の絵文字がつけられたら最初の1回だけNotionのDBにアイテム追加する」のをやりたいんだけど、つけられた絵文字が1つ目なのか2つ目以降なのか判別する手段ってあるのだろうか。。教えて詳しい人!
— なおぱー (@naopr) 2023年10月8日
Zapierが提供しているTablesというデータベース機能を使って上記がサクッと実現できたので、本エントリでご紹介します。
今回のユースケースに限らずZapier上でなにか重複チェックをしたい時にはTablesを検討してみるとよさそうです。
実現した機能
「Slackの投稿に特定の絵文字がついたら、1度だけNotionのDBにアイテムを追加する」ものです。
この機能のポイントは「1度だけ」という部分で、2回目以降他のユーザーによって絵文字がつけられた場合に無視する処理をTablesで実現しました。
Tablesとは
TablesはZapier上でデータベースを利用できる機能です。
今まで同様の機能を実現しようとするとGoogleスプレッドシートなど外部のサービスと連携する必要がありましたが、Tablesの登場によって手軽にデータベース機能を利用できるようになりました。
作成したzap
実際に作成したzapをお見せしながら中身を説明していきます。
zapの全体像は下記のようになります。
処理の流れはとてもシンプルです。
- Slackの任意の投稿に特定の絵文字がついた場合にトリガーする
- 投稿を一意に示すID(実際にはタイムスタンプ)を持つレコードがあるかTablesをチェックする
- レコードがあれば何もせずに終わる
- レコードがなければレコードを追加する
- Notionのデータベースにアイテムを追加する
具体的な設定内容について次から説明します。
テーブルの作成
zapを作成する前に、テーブルを作成しておく必要があります。
zapierトップページのサイドメニューにある[Tables]から新規テーブルを作成します。今回はSlack投稿のタイムスタンプだけを保存できれば十分なので、カラム1つだけのシンプルなテーブルを作成しました。
レコードの検索
zapの中でレコードを検索するには、アクションの中からTablesを選択してこんな感じでテーブルと検索条件をセットすればよいです。
レコードの存在チェック
レコードが存在していたかどうかは、アクションの中からFilterを選択してこんな感じで[Only continue if...]を設定すればよいです。
レコードの作成
レコードが存在しない場合に新規にレコードを作成するには、アクションの中からTablesを選択してこんな感じでテーブルとデータを指定すればよいです。
Tablesに関わる設定はこれだけです。簡単ですね!
zapが動き始めると、こんな感じでレコードが増えていきます。
まとめ
Zapierで重複チェックなどステートを持った処理を実現したい場合にTablesを使うとサクッと書けるので便利です。ぜひ使ってみてください!