はじめに
「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
を選べば作れます。今回はこんな感じのフォームを作りました。
FormはデフォルトでSpreadSheetと連携するようになっているので、なにかデータを入れれば自動的にそれに対応するスプレッドシートが作られるはずです。
Fusion Tableを作る
はじめて作る方はNew->More->Connect more app
からFusion Tableを追加して下さい
追加できたら、フォームと同じようにNew->More->Fusion Table
が選べるようになっているはずなので、クリックしてテーブルを作成して下さい。
この時テーブルのカラム名はフォームで作った項目名と揃える必要があります。
Fusion Table上のEdit->Change Columns
を選んでデフォルトの設定を変更して下さい。この時、GoogleFormが自動的に作成するカラムでTimestampもあるので、これも追加してやる必要があります。
(まだデータは入れなくて大丈夫です)
スクリプトを設定する
今度はスプレッドシートを使います。フォームの出力先のスプレッドシートを開いてTools->Script Editor
からスクリプトエディタを起動して下さい。開いたらFile->Project Properties
で出てくるダイアログボックスにdocidというカラムを追加して下さい。
valueのところにはFusion Tableのidが入ります。idはFusion Tableに移動してFile->About this table
から見れます。
終わったらこのインストラクションにしたがってFusion APIを有効にします。あとはこのコードをエディタにコピペするだけです。
最後にパーミッションの設定のためRun > checkAuthorization
で認証をして、フォームが送信されたらスクリプトを起動するように設定しましょう。
試してみる
Google FormからデータをSubmitすると・・・
数秒後にはFusion Tablesに反映されている!(要リロード)
進捗があればまた報告します。
2017/12/14追記
結局Google Fusionは使わずにherokuでやろうと思います。個人的にはAPIのハードルやジョインの困難さが今回見送った要因です。