できそうなことは一通りやってみる!
Google Apps Scriptではもともと組み込みのJDBCサービスを通じてSQL Serverに接続できるようなので、SQL Serverに接続できるならばと CData Connect Cloudに接続してテーブルの行数取得のテストをしてみました。
参考にしたのは以下2つのブログとKBです。ほぼコピペ
さっそくつなぐ
GASで新しいプロジェクトを作成して、以下のコードを書いて実行したら終わりです。
function myFunction() { // データベースへの接続情報を記載 var user = 'CData Connect Cloudのユーザー名'; var userPwd = 'ここにPAT'; var database = 'データベース名'; var host_name = 'tds.cdata.com'; var port = '14333'; var connectionString = 'jdbc:sqlserver://' + host_name + ':' + port + ';databaseName=' + database; // JDBCでデータベースへのコネクション確立 var conn = Jdbc.getConnection(connectionString, user, userPwd); var dbMetaData = conn.getMetaData(); var table = "取得したいテーブル名"; var tableSet = dbMetaData.getTables(null, null, table, null); while (tableSet.next()) { var tempTable = tableSet.getString(3); if (table.toUpperCase() == tempTable.toUpperCase()) { table = tempTable; validTable = true; break; } } tableSet.close(); if (!validTable) { Logger.log("Invalid table name: " + table); return; } var stmt = conn.createStatement(); var results = stmt.executeQuery(ここにクエリ); //SELECT * FROM [Kintone1].[Kintone].[顧客リスト] のようにデータベース名から書く var rsmd = results.getMetaData(); var numCols = rsmd.getColumnCount(); Logger.log('CountRows:' + numCols); }
これだけです。結果は以下のように、この場合はKintoneに入っている顧客テーブルの件数20件が得られました。
もちろん公式にサポートされているクライアントとして Google Sheets はあるのですが、なんらかシートを表示していない状態での処理(タイマー実行など)ではGASを使うのもいい手なのかなと思います。