GoogleスプレッドシートからPostgreSQLデータベースに直接アクセスしたいとお考えですか。標準のコネクタ機能ではPostgreSQLをサポートしていないため、Google Apps ScriptのJDBCサービスを利用する方法が一般的です。この記事では、接続に必要なJDBC URLの正しい指定方法を分かりやすく解説します。基本構文から実際の設定例、よくあるエラーの対処法まで網羅します。
【要点】PostgreSQL接続のためのJDBC URL指定のポイント
- JDBC URLの基本構文:
jdbc:postgresql://ホスト:ポート/データベース名?パラメータの形式で指定します。ポートはデフォルト5432ですが、変更する場合もこの形式で記述します。 - 認証情報の指定方法: ユーザー名とパスワードはURL内にパラメータとして含めるか、Propertiesオブジェクトで安全に渡します。後者をおすすめします。
- SSLやタイムアウトの設定: 接続パラメータとして
ssl=trueやconnectTimeout=10などを付与できます。環境に応じて適切に設定しましょう。
ADVERTISEMENT
目次
Apps ScriptのJDBCサービスとPostgreSQL接続の概要
Google Apps ScriptにはJDBCサービスが組み込まれており、これを使って外部データベースに接続できます。対応しているデータベースはPostgreSQL、MySQL、SQL Serverなどです。接続にはJDBCドライバが必要ですが、Googleのサーバー側にあらかじめ用意されているため、追加のライブラリは不要です。
JDBC接続の流れは次の通りです。まず、Jdbc.getConnection(url, username, password)またはJdbc.getConnection(url, info)を呼び出して接続を取得します。ここで指定するurlがJDBC URLです。このURLにはデータベースのホスト名、ポート番号、データベース名、そしてオプションの接続パラメータを含めます。
PostgreSQL用のJDBC URLの基本形式は以下の通りです。
jdbc:postgresql://<ホスト>:<ポート>/<データベース名>?<パラメータ1>=<値1>&<パラメータ2>=<値2>
例えば、ローカルのPostgreSQL(ポート5432)の「mydb」データベースに接続する場合、次のようになります。
jdbc:postgresql://localhost:5432/mydb
このURLにユーザー名やパスワードを指定する方法は次のセクションで詳しく説明します。
JDBC URLの正しい指定方法と実践手順
ここでは、実際にApps ScriptでPostgreSQLに接続するための手順を解説します。認証情報の安全な管理方法や、SSL接続が必要な場合の設定も含めます。
手順1: PostgreSQLのホスト情報を確認する
- データベースのホスト名とポート番号を確認する
PostgreSQLサーバーのIPアドレスまたはドメイン名とポート番号(デフォルト5432)を用意します。クラウドサービスの場合、コンソールから接続情報を取得できます。 - データベース名とユーザー認証情報を準備する
接続先のデータベース名、ユーザー名、パスワードを確認します。SSLが必要な場合は証明書情報も必要です。
手順2: Apps ScriptでJDBC URLを指定して接続する
- スクリプトエディタを開く
Googleスプレッドシートから「拡張機能」→「Apps Script」を開き、新しいスクリプトを作成します。 - 接続用の関数を作成する
以下のコードをエディタに貼り付けます。ポイントはJDBC URLの構文と認証情報の扱いです。function connectToPostgres() { var url = 'jdbc:postgresql://192.168.1.100:5432/mydb'; var username = 'myuser'; var password = 'mypassword'; var conn = Jdbc.getConnection(url, username, password); // クエリ実行など conn.close(); } - 認証情報をPropertiesで安全に管理する
パスワードをコードに直接書かないよう、スクリプトプロパティを使います。メニューの「プロジェクトの設定」→「スクリプトプロパティ」でキーと値を追加し、コード内でPropertiesService.getScriptProperties().getProperty('DB_PASSWORD')のように取得します。URLにパラメータとして含める場合は、jdbc:postgresql://host:5432/db?user=myuser&password=mypasswordと指定することも可能です。
手順3: SSL接続が必要な場合のURL指定
- SSLパラメータを追加する
URLにssl=trueを追加します。また、サーバー証明書の検証を無効にする場合はsslfactory=org.postgresql.ssl.NonValidatingFactoryを指定します(テスト環境のみ推奨)。 - 例:SSL接続のURL
jdbc:postgresql://host:5432/db?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
JDBC URL指定時の注意点とよくあるトラブル
接続がうまくいかない場合の代表的な原因と対処法を解説します。
ホスト名やポート番号の間違い
URL内のホスト名が解決できない、またはポート番号が間違っていると接続に失敗します。クラウドサービスの場合、IPアドレスが変わることがあるので、ドメイン名を使用するか定期的に確認します。
認証エラー(ユーザー名・パスワードの誤り)
URLに直接パスワードを含めると特殊文字で問題が起こる場合があります。URLEncoder.encodeでエンコードするか、Propertiesオブジェクトを使うと安全です。
SSL証明書の検証エラー
自己署名証明書を使っている場合、NonValidatingFactoryを指定しても接続できない場合は、sslmode=requireパラメータを試します。ただし、セキュリティリスクを理解した上で使用しましょう。
タイムアウト設定
ネットワーク遅延が大きい場合、デフォルトのタイムアウトでは短すぎることがあります。connectTimeout=30やsocketTimeout=60をURLパラメータに追加して延長できます。
ADVERTISEMENT
主要データベースのJDBC URL形式比較
| データベース | JDBC URLの例 | デフォルトポート |
|---|---|---|
| PostgreSQL | jdbc:postgresql://host:5432/db |
5432 |
| MySQL | jdbc:mysql://host:3306/db |
3306 |
| SQL Server | jdbc:sqlserver://host:1433;databaseName=db |
1433 |
| Oracle | jdbc:oracle:thin:@//host:1521/service |
1521 |
まとめ
GoogleスプレッドシートからPostgreSQLに接続するには、Apps ScriptのJDBCサービスと正しいJDBC URLが必要です。この記事で解説した基本構文「jdbc:postgresql://ホスト:ポート/データベース名」を使い、認証情報はPropertiesサービスで安全に管理しましょう。SSLやタイムアウト設定を適宜追加することで、安定した接続を確立できます。次のステップとして、接続後にSQLクエリを実行してデータを取得・更新する方法を試してみてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
