moto blog

GASからFusion Tablesを使ってみる

f:id:nmmmk:20181029135651j:plain

GAS(Google Apps Script)からFusion Tablesを制御してみます。

Fusion TablesをGoogle Driveに追加する

Fusion TablesをGoogle Driveに追加済みの方は、読み飛ばしてください。

  1. Google Driveを開いて、「新規」を押下します。
    f:id:nmmmk:20181013215639p:plain

  2. その他 -> アプリを追加を押下します。
    f:id:nmmmk:20181013215740p:plain

  3. Google Fusion Tablesをインストールします。
    f:id:nmmmk:20181025234352p:plain

Fusion Tablesを新規作成する

「Id」と「UserName」をカラムとして持つテーブルを作成します。

  1. その他 -> Google Fusion Tablesを押下して、スクリプトを作成します。
    f:id:nmmmk:20181025234442p:plain

  2. Create empty tableを押下する f:id:nmmmk:20181025234817p:plain

  3. 以下の画面が表示されるため、タイトル部分を押下します。
    f:id:nmmmk:20181029131858p:plain

  4. 名称を入力して、保存します。
    f:id:nmmmk:20181029132003p:plain

  5. Edit -> Change columnsを選択します。
    f:id:nmmmk:20181029132222p:plain

  6. 以下の画面が表示されることを確認します。
    f:id:nmmmk:20181029132304p:plain

  7. Columnが「Id: Number」と「UserName: Text」となるように変更します。
    f:id:nmmmk:20181029132623p:plain f:id:nmmmk:20181029132631p:plain

  8. 変更を保存します。
    f:id:nmmmk:20181029132718p:plain

  9. 警告が出ますが、「Save and remove columns」を選択してください。
    f:id:nmmmk:20181029132818p:plain

  10. GASから制御する際に使用するFusion TablesのIDを取得しておく。
    「docid=」に設定されている文字列をコピーしておくこと。
    f:id:nmmmk:20181029133022p:plain

GASのプロジェクトを作成する

  1. その他 -> Google Apps Scriptを押下して、スクリプトを作成します。
    f:id:nmmmk:20181013223705p:plain

  2. 以下のようにGASプロジェクトを作成します。
    f:id:nmmmk:20181013223805p:plain

GASからのFusion Tables制御を有効にする

  1. リソース -> Google の拡張サービス を選択します。
    f:id:nmmmk:20181029134118p:plain

  2. Fusion TablesをONにします。
    OKボタンを押下する前に、「Google Cloud Platform APIダッシュボード」のリンクを押下します。
    f:id:nmmmk:20181029134327p:plain

  3. 以下の画面が表示されるので、「APIとサービスの有効化」を押下します。
    f:id:nmmmk:20181029134541p:plain

  4. 検索窓に「Fusion」と入力すると、Fusion Tables APIが下部に表示されるため、それを選択します。
    f:id:nmmmk:20181029134702p:plain

  5. 「有効にする」を押下します。
    f:id:nmmmk:20181029134741p:plain

  6. 以下の画面に戻って、OKを押下します。
    f:id:nmmmk:20181029134843p:plain

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を確認する

  1. 実行 -> 関数を実行 -> testInsertを実行します。 Id = 1, UserName = "test"として、INSERTを実行します。
    f:id:nmmmk:20181029140933p:plain

  2. Fusion Tablesを開き、項目が追加されていれば成功です。
    f:id:nmmmk:20181029141127p:plain

SELECTを確認する

  1. 実行 -> 関数を実行 -> testSelectを実行します。 Id = 1のUserNameを取得します。
    f:id:nmmmk:20181029141230p:plain

  2. 表示 -> ログを選択します。
    f:id:nmmmk:20181029141359p:plain

  3. INSERT時に追加した、「test」が取得できていれば成功です。
    f:id:nmmmk:20181029141412p:plain