るさんちまん

技術メモとか雑記とか

Zapier Tablesで重複チェックをサクッと実現する

ある日、僕はこんなことに悩んでいました。

Zapierが提供しているTablesというデータベース機能を使って上記がサクッと実現できたので、本エントリでご紹介します。

今回のユースケースに限らずZapier上でなにか重複チェックをしたい時にはTablesを検討してみるとよさそうです。

実現した機能

「Slackの投稿に特定の絵文字がついたら、1度だけNotionのDBにアイテムを追加する」ものです。

この機能のポイントは「1度だけ」という部分で、2回目以降他のユーザーによって絵文字がつけられた場合に無視する処理をTablesで実現しました。

Tablesとは

TablesはZapier上でデータベースを利用できる機能です。

zapier.com

今まで同様の機能を実現しようとするとGoogleスプレッドシートなど外部のサービスと連携する必要がありましたが、Tablesの登場によって手軽にデータベース機能を利用できるようになりました。

作成したzap

実際に作成したzapをお見せしながら中身を説明していきます。

zapの全体像は下記のようになります。

処理の流れはとてもシンプルです。

  1. Slackの任意の投稿に特定の絵文字がついた場合にトリガーする
  2. 投稿を一意に示すID(実際にはタイムスタンプ)を持つレコードがあるかTablesをチェックする
    • レコードがあれば何もせずに終わる
    • レコードがなければレコードを追加する
  3. Notionのデータベースにアイテムを追加する

具体的な設定内容について次から説明します。

テーブルの作成

zapを作成する前に、テーブルを作成しておく必要があります。

zapierトップページのサイドメニューにある[Tables]から新規テーブルを作成します。今回はSlack投稿のタイムスタンプだけを保存できれば十分なので、カラム1つだけのシンプルなテーブルを作成しました。

レコードの検索

zapの中でレコードを検索するには、アクションの中からTablesを選択してこんな感じでテーブルと検索条件をセットすればよいです。

レコードの存在チェック

レコードが存在していたかどうかは、アクションの中からFilterを選択してこんな感じで[Only continue if...]を設定すればよいです。

レコードの作成

レコードが存在しない場合に新規にレコードを作成するには、アクションの中からTablesを選択してこんな感じでテーブルとデータを指定すればよいです。

Tablesに関わる設定はこれだけです。簡単ですね!

zapが動き始めると、こんな感じでレコードが増えていきます。

まとめ

Zapierで重複チェックなどステートを持った処理を実現したい場合にTablesを使うとサクッと書けるので便利です。ぜひ使ってみてください!