FusionTablesとの連携について
今回は、GoogleAppsScript(GAS)で
FusionTablesを操作(テーブルの参照・更新)する方法をご紹介します。
主にテーブルの参照(レコードの取得)、更新のやり方です。
FusionTablesとは
Google社が提供しているデータベースサービス。
FusionTablesのレコード取得方法
まずはFusionTablesのテーブルの参照(レコードの取得)方法を以下に記載します。
【取得サンプルコード】
var tableId = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; //FusionTablesのdocidを指定
var sql = 'SELECT ROWID, [項目] FROM ' + tableId + " WHERE [選択条件] = "xxxxx";
var result = FusionTables.Query.sqlGet(sql);
return result.rows;
【取得サンプルコード解説】
レコードの取得にはSELECT文を使います。
変数「tableID」にFusionTablesのDocIDを代入します。
これでFusionTalbesのどのテーブルのレコードを取得するかを指定しています。
また変数「sql」でSQL文を文字列として代入して、「FusionTables.Query.sqlGet()」を使ってSQL文を発行しています。
取得時にテーブルの「ROWID」というレコードを一意に表す項目を取得していますがこれは省略可能です。
しかし、レコードの更新や削除のときに必要になるのが「ROWID」なので注意が必要です。
更新や削除は次の文章で説明します。
FusionTablesのレコード更新方法
つづいてFusionTablesのレコード更新方法を以下に記載します。
【更新サンプルコード】
var tableId = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; //FusionTablesのdocidを指定
var sql = "UPDATE " + tableId + " SET [更新したい項目] = [更新したい値] WHERE ROWID = [ROWIDの値]";
var result = FusionTables.Query.sql(sql);
return result.rows;
【更新サンプルコード解説】
レコードの更新にはUPDATE文を使います。
SELECT文と同様にFusionTablesのDOCIDを指定してテーブルを指定します。
「SET」のあとに更新したい項目とその変更値(複数可)を指定します。
このときに「ROWID」で一意のレコードを指定するようにします。
FusionTablesの仕様として、更新や削除のときはROWIDの指定が必要です。
検索条件で絞り込んでも更新や削除の処理はできないようです。(記事掲載時点)
つまり1レコードずつしか更新処理ができませんので、複数行をまとめて更新することはできません。
もし複数行を変更したい場合は、For文を使ってROWIDを順次指定していき1行ずつ更新することになります。
FusionTablesとの連携について まとめ
- FusionTablesのレコード取得・更新にはdocidを指定する
- レコードを取得するにはSELECT文を用いる
- レコードを更新するにはUPDATE文を用いる
- レコードを更新・削除する際には一意のレコードを指定するためROWIDが必要
少しくせのあるレコード取得・更新方法ですが、慣れてしまえばどうということはありません。
みなさんもぜひ試してみてください。
以上、「【GoogleApps Script(GAS)】FutionTablesとの連携について」でした。