GASのJDBCサービスでCloud SQLデータベースに接続をする方法

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

GASからJDBCサービスを使ってCloud SQLのデータベースにアクセスする方法をシリーズでお伝えしています。

前回の記事はこちら。

GCPのCloud SQLデータベースのテーブルにSQLでレコードを追加する方法
GASからJDBCサービスを使ってCloud SQLのデータベースにアクセスする方法をシリーズでお伝えしています。今回は、GCPのCloud SQLデータベースのテーブルにSQLでレコードを追加する方法です。

Cloud SQLのデータベースにSQLでレコードを追加する方法をお伝えしました。

これで、GCPでのCloud SQLの準備と、SQLに馴染むのは十分かなと思いますので、いよいよGASからCloud SQLを操作していきたいと思います。

今回は、GASのJDBCサービスでCloud SQLデータベースに接続をする方法です。

では、行ってみましょう!

スポンサーリンク

前回のおさらい

これまで、以下のような手順で、データベースの準備を進めてきました。

GCPのプロジェクト配下にCloud SQLインスタンスを作成する
└Cloud SQL配下のインスタンスにデータベースを作成する
 └データベースにテーブルを作成する
  └テーブルにレコードを追加する

ここで、データベース名は「guestbook」、テーブル名は「entries」でした。

このデータベースにGASからアクセスしていきたいと思います。

JDBCサービスとは

外部のデータベースに接続する機能を提供するサービスとして、GASにはJDBCサービスが用意されています。

JDBCサービスはScript Servicesに含まれていますので、デフォルトで使用可能です。

「JDBC」…何のことやら、さっぱり予想がつきませんね、

これは「Java DataBase Connectivity」の略で、業界標準として「Javaによるプログラミング言語」と様々な種類のデータベースとの「接続」を提供するAPIです。

GASで提供されているJDBCサービスは、このAPIを利用して外部のデータベース接続を実現するものです。

詳しく知りたい方は、英語ですが、以下のドキュメントをそれぞれご覧ください。

Java SE Technologies - Database
This page contains information about Java Database Connectivity (JDBC) related to Java SE
JDBC  |  Apps Script  |  Google for Developers

GASからCloud SQLへの接続

このJDBCサービスですが、Cloud SQLのデータベースの接続については、専用のメソッドが用意されています。

その名もgetCloudSqlConnectionメソッドです。

Jdbc.getCloudSqlConnection(データベースURL, ユーザー名, パスワード)

このメソッドにより、データベースURLが示すデータベースに接続して、その接続を表すJdbcConnectionという種類のオブジェクトを返します。

データベースを操作する場合、この「接続」からスタートすることが多いので、覚えておくと良いかも知れません。

データベースURLの作り方

データベースURLですが、Cloud SQLでは以下のような作りになります。

jdbc:google:mysql://{インスタンス接続名}/{データベース名}

データベース名は今回の場合は「guestbook」という名前でしたね。

インスタンス接続名ですが、これはGCPのナビゲーションメニュー > 「SQL」の画面で、すぐに確認できます。

GCPでインスタンス接続名を確認する

何やら文字列と、リージョンと、インスタンス名がコロン記号「:」で結合された文字列です。

ユーザー名、パスワード

ユーザー名、パスワードは、Cloud SQLのインスタンス作成時に定めた「root」のものでも良いですし、GCPで新たなユーザーアカウントを追加することもできます。

GASからCloud SQLのデータベースに接続する

これで材料は揃いましたので、GASでCloud SQLのデータベースへの接続を試してみましょう。

コードはこちらです。

var connectionName = '*****データベース接続名*****'; //Instance_connection_name
var userName = '*****ユーザー名*****'; //user_name
var password = '*****パスワード*****'; //'user_password'
var databaseName = 'guestbook'; //database_name

var url = 'jdbc:google:mysql://' + connectionName + '/' + databaseName;

function readFromTable() {
  var connection = Jdbc.getCloudSqlConnection(url, userName, password);
  Logger.log(connection.getCatalog());

  connection.close();
}

(スクリプトとして、データベース接続名、ユーザー名、パスワードなどをベタ打ちするのはあまり望ましくないので、実際にはプロパティストアなどを用いてくださいね。)

実行すると、ログで以下のようにデータベース名の表示を確認できます。

GASでCloud SQLデータベースに接続してカタログをログ出力

どうやらきちんと接続できているようですね。

接続のカタログ名を取得する

10行目のgetCatalogメソッドですが、これはJdbcConnectionオブジェクトの「現在のカタログ名」を取得するものです。

JdbcConnectionオブジェクト.getCatalog()

カタログはデータベースの種類によって何を指すかが違うようですが、MySQLの場合はデータベースのことなので、つまり接続したデータベース名を返します。

データベース接続を閉じる

12行目のcloseメソッドは、接続を終了する命令です。

JdbcConnectionオブジェクト.close()

本来、スクリプトの実行が終了すると、JDBC接続は自動的に閉じるらしいのですが、GASの公式ドキュメントではcloseメソッドを明示的に使用することが推奨されています。

JDBC  |  Apps Script  |  Google for Developers

まとめ

以上、GASのJDBCサービスでCloud SQLデータベースに接続をする方法をお伝えしました。

データベースURLさえ作れれば、簡単に接続ができますね。

次回、接続したデータベースにクエリを実行してデータを取得します。

GASのJDBCサービスでCloud SQLデータベースにクエリを実行する方法
GASからJDBCサービスを使ってCloud SQLのデータベースにアクセスする方法をシリーズでお伝えしています。今回は、GASのJDBCサービスでCloud SQLデータベースにクエリを実行する方法です。

どうぞお楽しみに!

連載目次:GASのJDBCサービスでCloud SQLのDBを操作する

GASのデータベースの多くはスプレッドシートを使用しますが、ちゃんとしたデータベースを使用したい場合があります。そこで、JBDCサービスを使ってCloud SQLを使用する方法をシリーズでお伝えしていきます。
  1. GASのデータベースとして、なぜCloud SQLが有効なのか?その概要とメリット
  2. GASでデータベースとして使用するCloud SQLインスタンスを作成する方法
  3. GCPのCloud Shellを使ってCloud SQLインスタンスに接続する方法
  4. GCPのCloud SQLインスタンスにSQL文でデータベースを作成する方法
  5. GCPのCloud SQLデータベースにSQLでテーブルを作成する方法
  6. GCPのCloud SQLデータベースのテーブルにSQLでレコードを追加する方法
  7. GASのJDBCサービスでCloud SQLデータベースに接続をする方法
  8. GASのJDBCサービスでCloud SQLデータベースにクエリを実行する方法
  9. GASのJDBCサービスでCloud SQLにクエリを実行した結果を取り出す方法
  10. GASのJBDCサービスでCloud SQLのデータベースにレコードを追加する方法
  11. GASのJDBCサービスでCloud SQLのデータベースに複数のSQLを一括で実行する方法
タイトルとURLをコピーしました