ノンプログラミングでGoogleフォームの回答をMongoDBに保存する!

こんにちは。おいかわです。
Googleフォームって知ってますか?。簡単にアンケートフォームが作れてしまうんです。しかもノンプログラミングで出来てしまうんです。すごいですね!このただでさえ便利なGoogleフォームをさらに便利に使うためにMongoDBと連携させる方法をご紹介します!しかもノンプログラミングで出来てしまうんです(2回目)。

MongoDBの準備

MongoDBのサーバーとして今回はAmazon Linuxを使用しました。 MongoDBのインストール手順はこちらを参照してください。

tech.sanwasystem.com

セキュリティグループでMongoDBにアクセスするポートを開けておく必要があります。
f:id:h_oikawa2:20150927013046p:plain

データベースとコレクションを作成しておきます。
データベース名:form
コレクション名:form_coll
コマンドについてはこちらを参考に。
gihyo.jp

Google フォームの準備

GoogleフォームはGoogleドライブの一機能として提供されています。簡単に作れますので作り方の説明は省略します。こんなアンケートフォームを作りました。
f:id:h_oikawa2:20150927012017j:plain

連携の設定(zapier)

GoogleフォームとMongoDBの連携にはzapierを使います。zapierとはWebサービス同士をサイト上から簡単に連携させることが出来るWebサービスです。 (https://zapier.com

  1. アカウント作成後、ヘッダーの「MAKE A ZAP!」をクリックします。
  2. 連携させるサービスとトリガーとなるアクションを設定します。 f:id:h_oikawa2:20150927014950p:plain
    左側が起点となるサービスです。ここでGoogleスプレッドシートを選択していますが、これはGoogleフォームは回答内容をスプレッドシートに保持するためです。回答がされる毎にスプレッドシートに1行追加されていきます。そのアクションをトリガーとしてMongoDBにドキュメントを追加します。

  3. Googleスプレッドシートのアカウントを選択します。
    f:id:h_oikawa2:20150927020127p:plain
    zapierと連携する許可を求められますので許可します。

  4. MongoDBのアカウントを選択します。 f:id:h_oikawa2:20150927021004p:plain ここではHostとPortのみでOKです。

  5. 対象のスプレッドシート名とシート名を選択します。 f:id:h_oikawa2:20150927021411p:plain
    Googleドライブ内にあるスプレッドシートから選択することが可能です。

  6. MongoDBのデータベース・コレクションの選択とMongoDBに登録する時のKeyと各項目を紐付けをします。 f:id:h_oikawa2:20150927022358p:plain

  7. あとは名前をつけて登録完了です!

実行してみる

まずはGoogleフォームに回答を登録してみましょう。 f:id:h_oikawa2:20150927012017j:plain

Googleスプレッドシートには下記のように登録されています。 f:id:h_oikawa2:20150927025101p:plain

DASHBOARDの該当のZAPのメニューから「Run」を実行します。 f:id:h_oikawa2:20150927024139p:plain

実行中ダイアログが表示されます。連携が成功したようです!
f:id:h_oikawa2:20150927031307p:plain

MongoDBの方を見てみましょう。find()を実行します。 f:id:h_oikawa2:20150927031706p:plain
おおおおおおおおおお!しっかり格納されています!

このようにノンプログラミングで出来てしまうんです(3回目)。MongoDBと連携することにより回答結果の集計もやりやすくなりますね。

実は今回、最初はMySQLと連携させるつもりでした。しかし、MySQLとの連携はzapierの有料アカウントが必要なのでMongoDBにしたのですが、アンケートフォームという性質上スキーマレスなMongoDBの方があっているかもしれませんね。