基幹システムグループ N1! オートメーションスペシャリストの南川です。
今回は、自動ワークフロー作成サービスである Zapier を使った Google フォーム (Google Forms) と Notion データベースの連携について紹介します。
こちらの記事は、 NIFTY Tech Talk #10「 Notion で仕事のスピードを加速するテクニックとは?」にて発表した内容がベースとなっており、その時のスライドも公開しているので、興味のある方は確認してみてください!
背景
Notion にはデータベースというアイテム(ページ)を管理する機能があり、その機能を使ってタスク管理をしているとします。データベースのプロパティにはタスクのタイトル、「Todo」「In progress」「Done」といったステータス、担当者、依頼者があります。

また、データベースには様々なビューがあり、ボードビューを使うと、タスクの進捗状況が分かりやすくなります。

そして、担当しているシステムに関する依頼は Google フォームで受け付けており、 Google フォームの申請内容をもとに手動で Notion のデータベースにアイテムを追加しています。しかし、手動でのデータベースへの追加は面倒だと思います。

「ならば、 Google フォームではなく、 Notion のデータベースに依頼者が直接追加すればいいのでは?」という話も出てくるかと思いますが、以下の理由から Google フォームを依頼の申請フォームとして使いたいです。
- データベースのロック機能があるとはいえ、依頼者が誤ってアイテムを消してしまう可能性がある。

- Google フォームだと、必ず記入してほしい必須項目の指定や、各項目の説明の記述などができて自由度が高い。

このような背景から、 Google フォームに送信された依頼の内容をもとに、 Notion のデータベースにアイテムを自動的に追加したいというわけです。ここで登場するのが Zapier というサービスです。
Zapier とは
Zapier は複数のサービスやアプリを連携する自動ワークフローを、ノーコードで作れるサービスです。
対応しているサービス・アプリは5000個以上で、Gmail や Google スプレッドシート、 Google ドライブ、 Google フォームといった Google 製品はもちろんのこと、 Notion や Slack 、 GitHub などにも対応しています。対応サービスの一覧は https://zapier.com/apps から確認できます。
これらの対応しているアプリを互いに連携させ、以下のようなワークフローを作ることができます。
Zapier の用語
ここで Zapier に出てくる用語の一部を簡単に説明します。
今回紹介しない用語や詳しい説明については、以下のURLをご確認ください。
https://help.zapier.com/hc/en-us/articles/8496181725453
Zap
Zap とは、アプリやサービスを連携させる自動化されたワークフローです。 Zap は Trigger と1つ以上の Action で構成されます。この Zap を On にすると、 Trigger のイベントが発生するたびに、 Action が実行されます。

Zap の例としては、先ほどの Zapier で作れるワークフローの例で挙げた「検索にマッチしたメールを受信したら、 Slack にメッセージを送信する。」や「 Notion のデータベースに新しいアイテムが追加されたら、 Google スプレッドシートに行を追加する。」が挙げられます。
Trigger
Trigger とは、 Zap を開始するためのイベントです。 Trigger は、先ほどのワークフロー (Zap) の例における、「検索にマッチするメールを受信したら」や「 Notion の DB に新しいアイテムが追加されたら」に該当します。
Action
Action とは、 Trigger が発動した後に Zap が実行するイベントです。 Action は、先ほどのワークフロー (Zap) の例における、「 Slack にメッセージを送信する」や「 Google スプレッドシートに新しい行を追加する」に該当します。
やりたいことを Zapier に落とし込む
ここで、今回やりたいことについて振り返ってみます。今回は「 Google フォームに送信された依頼の内容をもとに、 Notion のデータベースにアイテムを自動的に追加する」ということをやりたいです。これを Zapier に落とし込んでみると次のようになります。
- 以下の Zap を作成する。
- Trigger : 「 Google フォームから回答が送信されたら」
- Action : 「 Notion のデータベースにアイテムを追加する」
実際に作ってみる
(1) 事前準備
Zap を作る前に、 Zap で連携する Google フォーム、 Notion のデータベースを作ります。
まず、「依頼デモ」という名前の Google フォームから送信された依頼を管理するための Notion のデータベースを作成します。このデータベースは、タイトル、ステータス、依頼者のプロパティを持っており、ステータスにはこの依頼の進捗状況として「Todo」「In progress」「Done」が値として入ります。先ほどのデータベースには担当者のプロパティを用意していましたが、今回は簡単にするためにプロパティをこの3つのみにします。


次に依頼を送信するための Google フォームを作成します。質問の内容は「依頼者の名前」「依頼の件名」「依頼の内容」となっています。

そして、 Zap を作るにあたり、 Google フォームで送信したダミーの回答が必要になってくるので、作成した Google フォームで以下のように適当な回答を記入して送信します。今回作る Zap では、左の Google フォームの回答を送信すると、右の Notion のデータベースのアイテムを自動作成することを目標とします。依頼者の名前がアイテムの依頼者プロパティ、依頼の件名がアイテムのタイトル、依頼の内容がアイテムの本文に対応しています。

(2) Zapier へのアクセス
事前準備が終わったので、本題の Zap 作成に移ります。
まず、 Zapier にログインし、左上の「Create Zap」ボタンを押します。この前に Zapier のアカウント作成などがあるかと思いますが、今回は省略します。

(3) Zap の名前を変更
「Create Zap」ボタンを押すと、 Zap の編集画面に遷移します。この画面の左上から、必要に応じてZapの名前を変更します。今回は「Google Form x Notion Demo」という名前にしました。

(4) Triggerの作成
次に、 Zap を開始するためのイベントである Trigger の作成をします。今回は「 Google フォームから回答が送信されたら」という Trigger を作成したいので、検索フィールドに「Google Forms」と入力し、「Google Forms」を選択します。

すると、 Event を選択するドロップダウンメニューが出てくるので、「New Form Response」を指定し、「Continue」ボタンを押します。

次に、 Google Forms account には、この Zap で Google フォームを操作するアカウントを指定します。今回は、黒塗りになっていますが私のアカウントを指定しています。

そして、 Form には、手順(1)で作成した Google フォームを指定し、「Continue」ボタンを押します。

あとは、作成した Trigger のテストをするため、「Test trigger」ボタンを押します。

すると、事前準備で回答した内容が表示されることが確認できるかと思います。確認できたら、「Continue」ボタンを押します。

(5) Action の作成
次に、 Trigger が発動した後に Zap が実行するイベントである Action の作成をします。今回は「Notion のデータベースにアイテムを追加する」という Action を作成したいので、検索フィールドに「Notion」と入力し、 Latest のほうの「Notion」を選択します。

すると、 Event を選択するドロップダウンメニューが出てくるので、「Create Database Item」を指定し、「Continue」ボタンを押します。

次に Notion を操作するアカウントの設定をします。 Notion account では、まず、「Connect a new account」ボタンを押します。

すると、 Notion へのアクセスをリクエストするウィンドウで出てくるので、「ページを選択する」ボタンを押します。

検索欄に手順(1)で作成したデータベース名を入力します。検索結果に候補として出てきたデータベースを選択し、「アクセスを許可する」ボタンを押します。

そして、作成したアカウントを選択し、「Continue」ボタンを押します。

次に、 Database には手順(1)で作成したデータベースを指定します。データベースを指定すると、そのデータベースの各プロパティの入力フィールドが出現します。

この入力フィールドには Trigger の情報(出力結果)を埋め込むことができます。タイトルでは、「Show all options」ボタンを押し、「1. 依頼の件名」を選択します。これにより、新しく追加するアイテムのタイトルは、先ほどの Google フォームの回答の依頼の件名の欄の値になります。

同じ要領で、依頼者のプロパティには「依頼者の名前」、 Content には「依頼の内容」を入力し、 Content Format には「Plain Text」を指定して、「Continue」ボタンを押します。

Content はデータベースのアイテムの本文で、以下の画像の赤枠の部分になります。

そして、作成した Action のテストをします。「Test action」ボタンを押すと、黒塗りが多いですが、 Action の実行結果が表示されます。

ここで、手順(1)で作成した Notion のデータベースを確認すると、先ほどの Google フォームの回答内容をもとに、アイテムが新しく作成されていることが確認できます。

(6) Zap の有効化・動作確認
Zap の編集画面に戻って、右上の「Publish」ボタンを押すと、 Zap が有効化され、トグルが On になります。

最後に Zap の動作確認をしてみます。 Zap を有効化した状態(トグルがOnになっている状態)で、 Google フォームから回答が送信されると、その内容をもとにして Notion のデータベースに新しくアイテムが作成されます。これで、 Google Form の回答内容を Notion DB に自動追加するワークフロー (Zap) の完成です。

まとめ
今回紹介したサービス Zapier を使うことで、 Notion や Google フォーム などの様々なサービスの連携をする自動ワークフローを、先ほどのデモのようにコードを一切書かずに作ることができます。
また、有料プランのみの話になりますが、 Zap は2つ以上の Action を持てるということで、 Action をさらに追加して、データベースにアイテムが追加されたことを Slack のチャンネルに通知することもできたりします。
他のサービスとの Notion の自動化の例については、公式サイトに色々載っているので興味のある方はご覧ください。
https://zapier.com/apps/notion/integrations