GASからFusion Tablesを使ってみる
GAS(Google Apps Script)からFusion Tablesを制御してみます。
Fusion TablesをGoogle Driveに追加する
Fusion TablesをGoogle Driveに追加済みの方は、読み飛ばしてください。
Google Driveを開いて、「新規」を押下します。
その他 -> アプリを追加を押下します。
Google Fusion Tablesをインストールします。
Fusion Tablesを新規作成する
「Id」と「UserName」をカラムとして持つテーブルを作成します。
Create empty tableを押下する
以下の画面が表示されるため、タイトル部分を押下します。
名称を入力して、保存します。
Edit -> Change columnsを選択します。
以下の画面が表示されることを確認します。
Columnが「Id: Number」と「UserName: Text」となるように変更します。
変更を保存します。
警告が出ますが、「Save and remove columns」を選択してください。
GASから制御する際に使用するFusion TablesのIDを取得しておく。
「docid=」に設定されている文字列をコピーしておくこと。
GASのプロジェクトを作成する
その他 -> Google Apps Scriptを押下して、スクリプトを作成します。
以下のようにGASプロジェクトを作成します。
GASからのFusion Tables制御を有効にする
リソース -> Google の拡張サービス を選択します。
Fusion TablesをONにします。
OKボタンを押下する前に、「Google Cloud Platform APIダッシュボード」のリンクを押下します。
以下の画面が表示されるので、「APIとサービスの有効化」を押下します。
検索窓に「Fusion」と入力すると、Fusion Tables APIが下部に表示されるため、それを選択します。
「有効にする」を押下します。
以下の画面に戻って、OKを押下します。
Fusion Tablesを制御する
Fusion TablesのIDを定義する
main.gsに以下の1行を追加します。
「xxxxxxxxxx」の部分は、前述したFusion TablesのIDを定義します。
var TableId = 'xxxxxxxxxx';
SELECT / INSERT用の処理を準備する
Idより、UserNameを取得するための関数と、
IdとUserNameを指定して、データを追加する関数をそれぞれ作成します。
function getUserName(id) { var sql = 'SELECT UserName FROM ' + TableId + ' WHERE Id=' + '\'' + id + '\''; var res = FusionTables.Query.sql(sql); var name = ''; if (res.rows) { name = res.rows[0][0]; } return name; } function insertUserName(id, name) { var sql = 'INSERT INTO ' + TableId + '(Id, UserName) VALUES (' + '\'' + id + '\'' + ',\'' + name + '\'' + ')'; var res = FusionTables.Query.sql(sql); return res; }
テスト用関数を準備する
INSERTテスト用とSELECTテスト用の関数を準備します。
INSERTに成功したかは、Fusion Tablesを直接確認し、
SELECTに成功したかは、ログで確認するようにしています。
function testInsert() { insertUserName(1, 'test'); } function testSelect() { var name = getUserName(1); Logger.log(name); }
ソースコード全体
var TableId = 'xxxxxxxxxx; function testInsert() { insertUserName(1, 'test'); } function testSelect() { var name = getUserName(1); Logger.log(name); } function getUserName(id) { var sql = 'SELECT UserName FROM ' + TableId + ' WHERE Id=' + '\'' + id + '\''; var res = FusionTables.Query.sql(sql); var name = ''; if (res.rows) { name = res.rows[0][0]; } return name; } function insertUserName(id, name) { var sql = 'INSERT INTO ' + TableId + '(Id, UserName) VALUES (' + '\'' + id + '\'' + ',\'' + name + '\'' + ')'; var res = FusionTables.Query.sql(sql); return res; }
確認してみる
INSERTを確認する
実行 -> 関数を実行 -> testInsertを実行します。 Id = 1, UserName = "test"として、INSERTを実行します。
Fusion Tablesを開き、項目が追加されていれば成功です。
SELECTを確認する
実行 -> 関数を実行 -> testSelectを実行します。 Id = 1のUserNameを取得します。
表示 -> ログを選択します。
INSERT時に追加した、「test」が取得できていれば成功です。