スプレッドシート

スプレッドシートからデータベースに連携する

Googleスプレッドシートからデータベースに連携できることを知ったので紹介します。
Google Apps Script(GAS)からJDBCでデータベースに接続でき、様々なデータを取得できます。

 

連携できるデータベース

サポートしているデータベースは以下の通りです。

  • Google Cloud SQL
  • MySQL
  • Microsoft SQL Server
  • Oracle

僕は今回、SQL Serverで試しました。

IPアドレスの接続許可設定

この方法では使用するIPアドレスの範囲が以下のように決まっているようです。
データベースの接続許可設定で、以下のIPアドレスを許可します。

64.18.0.0 – 64.18.15.255
64.233.160.0 – 64.233.191.255
66.102.0.0 – 66.102.15.255
66.249.80.0 – 66.249.95.255
72.14.192.0 – 72.14.255.255
74.125.0.0 – 74.125.255.255
173.194.0.0 – 173.194.255.255
207.126.144.0 – 207.126.159.255
209.85.128.0 – 209.85.255.255
216.239.32.0 – 216.239.63.255

コード

下記、1行目~3行目でデータベースの情報を設定します。
本例では取得したデータを26行目でスプレッドシートに出力する記述になっています。

var connectionName = 'ホスト名をここに入れる:1433;databaseName=データベース名をここに入れる;';
var user = 'ユーザー名をここに入れる';
var userPwd = 'パスワードをここに入れる';

var dbUrl = 'jdbc:sqlserver://' + connectionName;

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetOutput = ss.getSheetByName('hogehoge');

function readFromTable() {
  var conn = Jdbc.getConnection(dbUrl, user, userPwd);

  var stmt = conn.createStatement();
  stmt.setMaxRows(1000);
  var results = stmt.executeQuery('SELECT * FROM hoge');

  var data = [];
  var index = 0;
  while (results.next()) {
    data[index] = [];
    data [index][0] = results.getString("co11");
    data [index][1] = results.getString("col2");

    index++;
  }
  sheetOutput.getRange(1,1,data.length,data[0].length).setValues(data);

  results.close();
  stmt.close();
}

以下、参考。

公式ドキュメント(英語)
https://developers.google.com/apps-script/guides/jdbc

自動取得設定

データを自動で取得する設定をします。

スクリプトエディタからトリガーの設定をします。
上部メニューから以下を選択します。

編集 > 現在のプロジェクトのトリガー

ツールバーからも選択可能です。



右下のトリガーを追加をクリックします。



トリガーの追加画面が開きます。

1日1回、22時~23時の間に実行するようにするには、以下のように設定して、保存ボタンをクリックします。

  • イベントのソースを選択:時間主導型
  • 時間ベースのトリガーのタイプを選択:日付ベースのタイマー
  • 時刻を選択:午後10時~11時

トリガーを追加

時間の周期は1時間ごとや週1回、月1回など、様々な種類が設定できます。

自動取得設定は以上で完了です。

これでスプレッドシートからデータベースに連携して、データを取得することができました。

 

関連記事一覧

  • コメント ( 0 )

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。