FusionTables
GoogleSpreadSheet
googleform

Google FormからFusion Tablesに自動的にデータを追加

はじめに

 「RDBを使ったWebアプリを作ってくれと言われた。でも使用頻度はそんなに高くないから速度とかはほとんど追求しなくていい。そんなアプリをユーザーに便利でしかも自分も簡単に作れるようなサービスがないかな。もちろん無料で
 これが今回僕がGoogle Fusion Tablesを選んだ理由です。
 Fusion TableとはGoogle Drive上で使えるRDBアプリケーションで、本来はGoogle Mapとの連携や複数のユーザー間での共有(マージ)に強みがあります。ですが、一人で、通常のRDBとして使用する場合でもGoogle Drive上で使えるというのはなかなか魅力的です。
 Fusion Tableには悪いうわさもありますが、そのあたりはおいおい検証することにして、今回はGoogle Formから入力されたデータを自動的にFusion Tableに追加する方法について説明したいと思います。実は公式のサイトに説明が載っているので、英語が読めればこちらを読んで下さい。

Form を作る

Fusion Tableに入れ込むデータを入力するインタフェースの部分です。普通にGoogle Drive上でNew->More->Formを選べば作れます。今回はこんな感じのフォームを作りました。

s_Screenshot from 2017-12-02 23-36-02.png

FormはデフォルトでSpreadSheetと連携するようになっているので、なにかデータを入れれば自動的にそれに対応するスプレッドシートが作られるはずです。

Fusion Tableを作る

はじめて作る方はNew->More->Connect more appからFusion Tableを追加して下さい

Screenshot from 2017-12-02 23-41-05.png

追加できたら、フォームと同じようにNew->More->Fusion Tableが選べるようになっているはずなので、クリックしてテーブルを作成して下さい。
この時テーブルのカラム名はフォームで作った項目名と揃える必要があります。
Fusion Table上のEdit->Change Columnsを選んでデフォルトの設定を変更して下さい。この時、GoogleFormが自動的に作成するカラムでTimestampもあるので、これも追加してやる必要があります。

Screenshot from 2017-12-02 23-44-46.png

(まだデータは入れなくて大丈夫です)

スクリプトを設定する

今度はスプレッドシートを使います。フォームの出力先のスプレッドシートを開いてTools->Script Editorからスクリプトエディタを起動して下さい。開いたらFile->Project Propertiesで出てくるダイアログボックスにdocidというカラムを追加して下さい。

docid.png

valueのところにはFusion Tableのidが入ります。idはFusion Tableに移動してFile->About this tableから見れます。
終わったらこのインストラクションにしたがってFusion APIを有効にします。あとはこのコードをエディタにコピペするだけです。

最後にパーミッションの設定のためRun > checkAuthorizationで認証をして、フォームが送信されたらスクリプトを起動するように設定しましょう。Screenshot from 2017-12-02 23-57-25.png

試してみる

Google FormからデータをSubmitすると・・・

s_Screenshot from 2017-12-02 23-59-54.png

数秒後にはFusion Tablesに反映されている!(要リロード)

Screenshot from 2017-12-03 00-00-07.png

進捗があればまた報告します。

2017/12/14追記
結局Google Fusionは使わずにherokuでやろうと思います。個人的にはAPIのハードルやジョインの困難さが今回見送った要因です。