本記事は、Code Polaris Advent Calendar 2024 16日目の記事になります。
背景
- Zapierを触ってみたかった
前提
- Slack、Notion、Zapier それぞれのアカウントを作成している
- 連携するNotion DB(Slackの投稿を保存する)を作成している
- 作成したDB
手順
1. Zapを作成する
2. Triggerを設定
2-1. Triggerをクリック
2-2. Slackを選択
2-3. Trigger event に「New Reaction Added」を設定
2-4. 連携するSlackアカウントを選択→「許可する」をクリック
赤枠で囲んだ部分に連携したSlackアカウントが表示されたら「Continue」クリック
2-5. Configureの設定
- Channel: Notionに自動保存したいSlackのチャンネル
- 指定しなければ、全てのチャンネルから投稿をNotionに保存できる
- Reaction: Triggerにしたい任意のスタンプ
- 本記事では「kihyo(起票)」スタンプを設定
- User: Notionに自動保存できるSlackユーザー
- 指定しなければワークスペースにいる全てのユーザーが投稿をNotionに保存できる
- 「Continue」クリック
- 「Test trigger」クリック→Testの右横の丸が緑色になればOK
3. Actionを設定
Triggerで取得したSlackのデータを加工するためのActionを設定する。
3-1. 「Action」 をクリック
3-2. 「Formatter」 を選択
3-3. 「Action event」 に 「Text」 を選択
3-4. Configureの設定
- 「Transform」に「Truncate」を選択
- Slackの投稿文の一部を取得する
- 「input」に「Message Text」を選択
- Max Length: 取得する文字数を入力
- 本記事では10文字に設定
- 「Continue」をクリック
- 「Test step」をクリック
3. Notionの設定を行う
3-1. 「+」(Add step)をクリック → Notionを選択
3-2. 「Action event」に「Create Database Item」を選択
3-3. 「ページを選択する」をクリック
3-4. 投稿を保存したいデータベースにチェックを入れる
3-5. Configureの設定
-
「名前」には、「Output」を設定
-
「Content」には、以下の2つをを設定
- 「Message Permalink」(投稿元のリンク)
- 「Message Text」(Slack の投稿の内容)
- 「タグ」
「Include time with date fields?」にチェックを入れ、「Continue」をクリック
Zapのテストを行う
テストが通ったら「Publish」をクリック
遭遇したエラー
- テストではうまくいったのに、実際にスタンプを押すとNotion DBにページが作成されなかった
- HOME -> Zap Historyを見ると、Stoppedの表示が出ていた
エラーメッセージ
body failed validation. Fix one: body.properties.名前.id should be defined, instead was `undefined`. body.properties.名前.name should be defined, instead was `undefined`. body.properties.名前.start should be defined, instead was `undefined`.
本文の検証に失敗しました。修正 1: body.properties.名前.id を定義する必要がありますが、undefined
でした。body.properties.名前.name を定義する必要がありますが、undefined
でした。body.properties.名前.start を定義する必要がありますが、undefined
でした。
対応
- 作成したのZapを削除して、最初から作り直したら上手く動いた
- 原因は分からない
- 参考記事
挙動確認
Notion DBにページが作成されたのを確認できた。上から2番目はテスト時に作成されたもの。
ページを開くと投稿元のリンクも貼られており、ちゃんと投稿元に飛べた
感想
タグの設定で詰まったりしたが色々試していく中で把握できた。
参考記事の説明が分かりやすかったので1日で基本操作をマスターできた。
今後も日常生活でZapierを活用していきたいと思った。