MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

Google Apps Script から CData Connect Cloudに接続してみる

できそうなことは一通りやってみる!

Google Apps Scriptではもともと組み込みのJDBCサービスを通じてSQL Serverに接続できるようなので、SQL Serverに接続できるならばと CData Connect Cloudに接続してテーブルの行数取得のテストをしてみました。

参考にしたのは以下2つのブログとKBです。ほぼコピペ

qiita.com

www.cdata.com

さっそくつなぐ

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を使うのもいい手なのかなと思います。