GAS JDBCでDB接続
はじめに
Google Apps Script(GAS)は、Google Workspace の自動化に便利ですが、外部データベース(外部DB)へのアクセスも可能です。JDBC を利用すれば、MySQL、PostgreSQL、Oracle などのクラウドDBとシームレスに連携できます。
GASとJDBCの基本
GAS には JDBC サービスが組み込まれており、Jdbc.getConnection を呼び出すだけでデータベース接続が確立します。接続文字列は jdbc:mysql://host:port/db のように書きます。接続後は Statement や PreparedStatement を使って SQL を実行します。
MySQL接続例
MySQL への接続は以下のように記述します。
var conn = Jdbc.getConnection(
'jdbc:mysql://:/',
'',
''
);
var stmt = conn.createStatement();
var results = stmt.executeQuery('SELECT * FROM users LIMIT 5');
while (results.next()) {
Logger.log(results.getString('name'));
}
conn.close();
クラウド上の RDS などを利用する場合は、VPC の設定やファイアウォールを確認してください。
PostgreSQL接続例
PostgreSQL への接続は MySQL とほぼ同じですが、ドライバが異なります。
var conn = Jdbc.getConnection(
'jdbc:postgresql://:/',
'',
''
);
// 以降は同様に Statement を使う
PostgreSQL のクラウドサービス(Cloud SQL など)では、接続先の IP を許可リストに追加する必要があります。
Oracle接続例
Oracle への接続は次のように行います。
var conn = Jdbc.getConnection(
'jdbc:oracle:thin:@::',
'',
''
);
// 以降は同様に Statement を使う
Oracle のクラウド版(Oracle Cloud)では、ネットワーク設定が重要です。
クラウドDBへの接続
AWS RDS、Google Cloud SQL、Azure Database などのクラウドDBは、GAS から直接接続できます。接続文字列にクラウドプロバイダのエンドポイントを指定し、必要に応じて SSL を有効化します。例として Cloud SQL の接続は次のようになります。
var conn = Jdbc.getConnection(
'jdbc:postgresql://:5432/',
'',
'',
{ 'useSSL': 'true', 'requireSSL': 'true' }
);
SQL実行と結果取得
SQL を実行する際は executeQuery(SELECT)と executeUpdate(INSERT/UPDATE/DELETE)を使い分けます。結果は ResultSet オブジェクトで取得し、getString や getInt で列値を取得します。
var stmt = conn.createStatement();
var rs = stmt.executeQuery('SELECT id, name FROM customers');
while (rs.next()) {
var id = rs.getInt('id');
var name = rs.getString('name');
Logger.log(id + ': ' + name);
}
rs.close();
エラーハンドリングとベストプラクティス
接続やクエリ実行時に例外が発生することがあります。try/catch で捕捉し、finally で必ず conn.close() を呼び出すようにします。また、接続プールを利用するとパフォーマンスが向上します。
try {
var conn = Jdbc.getConnection(...);
// クエリ実行
} catch (e) {
Logger.log('DB error: ' + e);
} finally {
if (conn) conn.close();
}
まとめ
GAS と JDBC を組み合わせることで、Google Workspace の自動化と外部DB(MySQL、PostgreSQL、Oracle)を統合できます。クラウドDB への接続も簡単に実装でき、SQL 実行や結果取得が可能です。セキュリティとエラーハンドリングを意識しながら、実務に活かしてみてください。
コメント
コメントを投稿