こんにちは!ニフティ基幹システムグループの佐藤です。
業務では、主にまかせて365, Wi-Fiルーターレンタルの開発・運用を担当しています。
最近、Zapierを使ってコードを書かずにSlackワークフローを投稿すると自動でNotionDBにアイテムが追加されるようにしてみたのでお話したいと思います。
背景
私の所属チームでは複数のサービスのシステムの開発・運用を担当しています。そのため問い合わせを各方面からいただくのですが、問い合わせ用のSlackチャンネルでそれらのやり取りをしていました。その度に管理用に使用しているNotionDBに問い合わせのアイテムを手動で作成していて、それが本当に大変でした・・・(手間がかかる・・・)
登場人物
- Slackワークフロー
- Zapier
- スプレッドシート
- NotionDB
この4つが登場します。
全体構成
以下のような構成になります。
手順
1. Slackワークフローを準備する
Slackワークフロービルダーから、Slackワークフローを作成します。
全体のイメージとしてはこんな感じです。
フォームの内容にはサービスが複数あるので、ワークフローにサービス名のドロップダウンを仕込みました。(後で使います)あとは、タイトルと質問内容を記入欄として用意しました。
次に、「スプレッドシートに追加する」を選択します。
スプレッドシートは「フォームからスプレッドシートを選択する」にすると勝手に作られます。これを選択するとシートも勝手に作って指定してくれます。特定のスプレッドシートを選択したい場合は「自分のスプレッドシート」から選択すればできそうです。
列はフォームに入力した内容を「変数を挿入する」から選択してください。
こうすることで、フォームに入力された内容がスプレッドシートに投入されるようになります。
最後に、フォームを投稿したらチャンネルに投稿した内容が通知がされるようにします。
(全体イメージを参考にしてみてください)
2. Zapierを準備する
全体構成
- トリガーにスプレッドシートを設定する
- Eventには「New Spreadsheet Row」を選択します。ワークフローで書き込まれるスプレッドシートとシートをここで指定します。そうすることでワークフローで行が追加されたらZapierが発火するようにできます。
- 問い合わせワークフローのSlackリンクを取得する
- NotionDBのアイテムから問い合わせスレッドを追いたかったのでこの処理を入れています。必要なければカットでもOK
- 結構無理矢理ですが、「Find Message in Slack」で検索をして問い合わせワークフローのスレッドを引っ張ってきています。タイトルが全く同じものでなければ複数取れないし、取れちゃっても一番最新のものが取れるようにしてるので大丈夫・・・!
- NotionDBにアイテムを作成する
- Eventには「Create Database Item」を設定します。
- 追加したいNotionDBを選択し、プロパティ・本文に追加する内容を設定します。 Nameはアイテムのタイトルに当たるものなので、スプレッドシートのタイトルを指定しました。 チームで使用している問い合わせ用のNotionDBには、プロパティに「サービス名」という欄を設けているので、そこにはスプレッドシートのサービス名を指定しました。 本文はContentから指定できるので、ここにはスプレッドシートの質問内容と手順2で取得したSlack問い合わせのURLが入るように設定しました。
- アイテムが作成されたらSlackに通知されるようにする
- Eventには「Send Channel Message in Slack」を設定します。 Channelに手順2で取得した
ChannelId
を指定します。MessageTextには好きな文言を入れてください。アイテムのタイトルやNotionURLなどを文面に含めるとSlackからNotionに飛べるので便利で良さそうですね。 問い合わせフォームを通知したスレッドに通知する場合は、Threadに手順2で取得したTs
を指定すれば良いです。
- Eventには「Send Channel Message in Slack」を設定します。 Channelに手順2で取得した
感想
問い合わせがそこそこあるので、その度にアイテムを作成するのが大変だったので、自動化できてよかったです。githubとの連携もできるので、それについても今後ブログにできたらと思います。