ADVERTISEMENT

【Googleスプレッドシート】PostgreSQLとの接続!JDBC URL指定の方法

【Googleスプレッドシート】PostgreSQLとの接続!JDBC URL指定の方法
🛡️ 超解決

GoogleスプレッドシートからPostgreSQLデータベースに直接アクセスしたいとお考えですか。標準のコネクタ機能ではPostgreSQLをサポートしていないため、Google Apps ScriptのJDBCサービスを利用する方法が一般的です。この記事では、接続に必要なJDBC URLの正しい指定方法を分かりやすく解説します。基本構文から実際の設定例、よくあるエラーの対処法まで網羅します。

【要点】PostgreSQL接続のためのJDBC URL指定のポイント

  • JDBC URLの基本構文: jdbc:postgresql://ホスト:ポート/データベース名?パラメータの形式で指定します。ポートはデフォルト5432ですが、変更する場合もこの形式で記述します。
  • 認証情報の指定方法: ユーザー名とパスワードはURL内にパラメータとして含めるか、Propertiesオブジェクトで安全に渡します。後者をおすすめします。
  • SSLやタイムアウトの設定: 接続パラメータとしてssl=trueconnectTimeout=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のホスト情報を確認する

  1. データベースのホスト名とポート番号を確認する
    PostgreSQLサーバーのIPアドレスまたはドメイン名とポート番号(デフォルト5432)を用意します。クラウドサービスの場合、コンソールから接続情報を取得できます。
  2. データベース名とユーザー認証情報を準備する
    接続先のデータベース名、ユーザー名、パスワードを確認します。SSLが必要な場合は証明書情報も必要です。

手順2: Apps ScriptでJDBC URLを指定して接続する

  1. スクリプトエディタを開く
    Googleスプレッドシートから「拡張機能」→「Apps Script」を開き、新しいスクリプトを作成します。
  2. 接続用の関数を作成する
    以下のコードをエディタに貼り付けます。ポイントは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();
    }
  3. 認証情報をPropertiesで安全に管理する
    パスワードをコードに直接書かないよう、スクリプトプロパティを使います。メニューの「プロジェクトの設定」→「スクリプトプロパティ」でキーと値を追加し、コード内でPropertiesService.getScriptProperties().getProperty('DB_PASSWORD')のように取得します。URLにパラメータとして含める場合は、jdbc:postgresql://host:5432/db?user=myuser&password=mypasswordと指定することも可能です。

手順3: SSL接続が必要な場合のURL指定

  1. SSLパラメータを追加する
    URLにssl=trueを追加します。また、サーバー証明書の検証を無効にする場合はsslfactory=org.postgresql.ssl.NonValidatingFactoryを指定します(テスト環境のみ推奨)。
  2. 例: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=30socketTimeout=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

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。