Microsoft SQL Server
へGAS(Google Apps Script)を用いてアクセスして、Select結果をスプレットシートへコピーしてくる一連の流れをまとめています。
#GASを用いたSQL Serverへの接続方法
MicrosoftのSQL SeverへGASから接続したいなと思いまして、GASのリファレンス(JDBC)を調べてみるとGoogle Cloud SQL
、MySQL
、Microsoft SQL Server
、Oracle databases
はサポートされているようでした。
ただ、SQLサーバーへの接続をしている、参考サイトが見つからなかったので試しにつないでみて、実際繋げましたよという報告です。
#Microsoft SQL Sever接続のスクリプト
ということで、公式のリファレンスの転用になりますが、以下の通りで接続することができました。JDBCでSQL Serverとのコネクションを張って、データをSelectしています。その結果は、予め用意しておいたスプレットシートへコピーするようにしています。
データベース情報
、クエリ
、結果を出力するスプレットシートのID
は各自で設定するようにしてください。
function SQLdb() {
function readFromTable() {
// データベースへの接続情報を記載
var user = '【ユーザ情報を指定】';
var userPwd = '【パスワードを指定】';
var database = '【データベース名を指定】';
var host_name = '【ホスト名を指定】';
var port = '【ポート名を指定】';
var connectionString = 'jdbc:sqlserver://'+host_name+':'+port+';databaseName='+database;
// JDBCでデータベースへのコネクション確立
var conn = Jdbc.getConnection(connectionString , user, userPwd);
// 処理の開始時間を取得
var start = new Date();
var stmt = conn.createStatement();
// デバッグ用(レコードの最大取得件数を指定できます。)
stmt.setMaxRows(5);
// クエリの実行
var results = stmt.executeQuery("SELECT 【...クエリを指定】");
// カラムの数を取得
var numCols = results.getMetaData().getColumnCount();
// 以下、スプレットシートへの結果のコピー処理
var sheet = SpreadsheetApp.openById('【結果出力先のシートidを指定】').getSheets()[0];
var cell = sheet.getRange(1,1);
var row =0;
// データのヘッターを指定(フィールド名)
var fields=["id","name","price"];
for(var i=0;i<fields.length;i++){
//value[i]=values[i];
cell.offset(row, i).setValue(fields[i]);
Logger.log(fields[i])
}
row++;
// クエリの結果をコピー
while (results.next()) {
var rowString = '';
for (var col = 0; col < numCols; col++) {
rowString += results.getString(col + 1) + '\t';
cell.offset(row, col).setValue(results.getString(col +1 ));
}
row++
}
results.close();
stmt.close();
// 終了時刻の取得と、実行時間のログ出力
var end = new Date();
Logger.log('Time elapsed: %sms', end - start);
}
readFromTable();
}
(参考)スプレットシートへの出力結果
出力件数はstmt.setMaxRows(5)で5件に指定しているため、5つのレコードを取得することができました。
スクリプトで指定するスプレットシートのIDですが、スプレッドシートのURLの中の以下下線太文字部分となります。(下記では、IDの部分をダミー値にしています。)
https://docs.google.com/spreadsheets/d/1P8UmWe1397llBlC0-EcYiSs2ds_psCdhodJT4dtjIdk/edit#gid=0
ということで、GASを用いたMicrosoft SQL Serverへの接続方法の説明でした。スプレットシートを用いるとサーバレスなデータベースっぽく扱うこともできるので重宝しています。よかったら参考にしてみてください。