FusionTablesを使用する

いくつかトラップがあるので備忘録を兼ねて手順をまとめておく

Fusion Tableを作成する
  1. Googleドライブページで、作成→その他→アプリを追加
  2. FusionTables で検索して、「接続」してFusionTablesを使えるようにする
  3. 再度Googleドライブページで、作成→その他→GoogleFusionTables でFusionTablesを使えると思いきや、うんともすんとも言わない・・
  4. なので、このリンクを https://www.google.com/fusiontables/data?dsrcid=implicit をクリックする
  5. こっちのページで https://support.google.com/fusiontables/answer/2571232 「Create a Fusion Table」というボタンを押すのでもOK
  6. すると「From this computer」「Google Spreadsheets」「Create empty table」という3つの選択肢があるダイアログが表示されるので、「Create empty table」を選択して、テーブル作成
  7. UIはちょっとわかりにくいけど、カラム名とか型とか変更できる。内部的にROWID」というID列が自動的に作られる。
  8. 3行分ぐらいのデータを適当に投入しておく
  9. URLからこのテーブルのIDを控えておく(docid=の部分) https://www.google.com/fusiontables/DataSource?docid=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
GASからFusion Tableにアクセスする
  1. GoogleドライブページからGASプロジェクトを作成する
  2. ※1のコードをコピペ
  3. ただデフォルトではFusion Tables APIが使用できないので
  4. 「リソース」→「Googleの拡張サービス」で「Fusion Tables API」を有効にする。(ホントは新しいバージョンのAPIがあるらしいのだが、まだv1しか使用できない・・)
  5. さらにそのダイアログの「Googleデベロッパーコンソール」のリンクをクリックして、「Fusion Tables API」を有効にする(これが忘れやすいので要注意)
  6. その後さらに、「実行」→「doGet」とすると、このGASアプリの認証を求められるので、認証する
  7. 再度「実行」→「doGet」すると、エラーなく終了すると思うので、「表示」→「ログ」にさっき投入したデータが表示されていれば成功
※1
// tableId を自分のFusion TablesのIDに変更する
var tableId = 'XXXXXXXXXXXXXXXXXXXXXXXXX';

function doGet(request)
{
  // 自分が定義したテーブルのカラム名に変更する
  var sql = 'SELECT ROWID, col1, col2 FROM ' + tableId + ' LIMIT 100';
  
  var result = FusionTables.Query.sqlGet(sql);
  for( var i=0; i<result.rows.length; ++i )
  {
    Logger.log("ROWID = %s, col1 = %s, col2 = %s", result.rows[i][0], result.rows[i][1], result.rows[i][2]);
  }
}