走る SQL で グーグル シート Apps Script JDBC を書かずに
Apps ScriptのJDBCサービスは正常に動作し、このページではそのコード、6分間の制限時間、IPアドレス範囲、スクリプト内のパスワードなど、すべてを正直に表示しています。さらに、別の方法も紹介しています。データベースの隣にある小型エージェントがSQLを実行し、Googleスプレッドシートのアドオンがデータをシートに取り込むというものです。JavaScriptもファイアウォールの変更も不要で、無料プランで利用できます。
それでもApps Script JDBCを使いたいなら、これが正直なバージョンです。
Googleの JDBCサービス Apps ScriptをMySQL、Google Cloud SQL for MySQL、PostgreSQL、Microsoft SQL Server、Oracleに接続します。シートを埋める最小限の動作スクリプトは次のようになります。
関数 顧客を読み込む() { const 小道具 = プロパティサービス.スクリプトプロパティを取得する(); // パスワードはコードから除外する const コネクション = JDBC.接続を取得する('jdbc:mysql://db.example.com:3306/sales'、小道具。プロパティを取得する('DB_USER')、小道具。プロパティを取得する('DB_PASS')); const rs = conn。ステートメントを作成する().executeQuery('SELECT customer_id, name, city FROM customers LIMIT 1000'); const 行 = []; その間 (rs.次())行。押す([rs.getString(1)、rs。getString(2)、rs。getString(3)]); rs.近い(); 接続。近い(); const シート = スプレッドシートアプリ.アクティブなスプレッドシートを取得().getSheetByName(「顧客」); シート。クリアコンテンツ(); シート。範囲を取得する(1, 1、行の長さ、 3).setValues(行); }
このサンプルではMySQLを使用しています。他のエンジンを使用する場合は、接続文字列のみが変更されます。 jdbc:postgresql://, jdbc:sqlserver:// そして jdbc:oracle:thin:@ 同じ形状に従い、Cloud SQL は jdbc:google:mysql://実行する前に、データベースが Google のサーバーからの接続を受け入れる必要があります。Google はアドレス範囲を次のように公開しています。 JSONファイル データベースファイアウォールに追加して同期させておく必要があり、データベースは1025番以上のポートでリッスンする必要があります。実際に問題となる制限は、Googleの 割り当てページ:
| 制限 | 個人のGoogleアカウント | Google Workspaceアカウント |
|---|---|---|
| スクリプト実行時間(実行ごと) | 6分 | 6分 |
| カスタム関数ランタイム(JDBCを呼び出す数式) | 30秒 | 30秒 |
| 1日あたりのJDBC接続数 | 10,000 | 50,000 |
| ユーザーごとの同時実行数 | 30 | 30 |
| 時間駆動型トリガー、1日あたりの合計実行時間 | 90分 | 6時間 |
上記のサンプルでは、2つの点が隠されています。Googleのサンプルでは、ユーザー名とパスワードがコード内でプレーンな文字列として渡されており、実際に使われているほとんどのスクリプトもそれをコピーしています。スクリプトのプロパティを使うことで、これらはソースコードには含まれませんが、スクリプトを編集できる人なら誰でも読み取ることができます。また、すべての行がスクリプトのメモリに収まり、6分以内に処理を完了する必要があるため、クエリが遅い場合やテーブルが大きい場合は、処理を手動で分割する必要があります。テーブルが小さく、データベースがインターネットからアクセス可能で、スクリプトを1人の開発者が所有している場合は、JDBCで問題ありません。このページの残りの部分は、それ以外のすべてのユーザー向けです。
代わりに得られるもの
データベースに対する SQL クエリの結果を保持する Google スプレッドシート。 クエリーの実行 サイドパネルにあるボタンで、必要なときにいつでも最新の行を取得できます。例:
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | 顧客ID | ファーストネーム | 苗字 | 国 | 合計 |
| 2 | 1042 | マリア | アルバレス | アメリカ合衆国 | 1,284.50 |
| 3 | 1043 | ダニエル | オカフォー | アメリカ合衆国 | 612.00 |
| 4 | 1047 | プリヤ | ナイア | アメリカ合衆国 | 2,090.75 |
| 5 | 1051 | トーマス | ベルク | アメリカ合衆国 | 338.20 |
| 6 | 1056 | ルシア | フェレイラ | アメリカ合衆国 | 1,455.00 |
| 7 | 1060 | ケンジ | 佐藤 | アメリカ合衆国 | 874.10 |
| 8 |
データベースからライブ配信違いはクエリの実行場所にあります。JDBCでは、Googleのサーバーがデータベースへの接続を開くため、ファイアウォールで接続を許可する必要があり、スクリプトはパスワードを保持する必要があります。一方、Query Streamsでは、既にデータベースにアクセスできるコンピュータ上でエージェントと呼ばれる小さなプログラムが実行され、Query Streamsへのアウトバウンド接続を1つ確立して、そこでSQLを実行します。Google Sheetsアドオンは行を要求し、行のみが送信されます。ファイアウォールで何も開かれることはなく、パスワードがエージェントから外部に送信されることはありません。
必要なもの
サーバーにアクセスできるコンピューター上のエージェント
Google スプレッドシートからの要求に応じてデータベースにクエリを実行する、バックグラウンドで動作する小さなプログラム。多くの場合、データベースサーバー自体、または同じネットワーク上の常時稼働しているコンピューターが使用される。
あなた自身の接続情報
サーバー名、データベース名、そしてデータベースを読み取るためのユーザー名とパスワード。もし他の人がデータベースを管理している場合は、この部分をその人に尋ねてください。
どのコンピュータにエージェントがインストールされますか? 常に稼働していて、既に自身のデータベースにアクセスできるマシンであればどれでも構いません。多くの場合、データベースサーバー自体、または同じネットワーク上のコンピュータです。 Google スプレッドシートはどこにでも配置できますブラウザ上で動作します。
4つのステップで設定できます
-
アカウントを作成する
行く my.querystreams.com そして、スプレッドシートで使用している Google アカウントでサインアップします。 無料 これは計画です。試作ではなく、正式な計画であり、2つの接続とGoogleスプレッドシートからのアドホックSQLを網羅しています。
サーバーにアクセスできるコンピューターにエージェントをインストールしてください。



サインインして開く ダウンロードそして、既にデータベースにアクセスできるマシン(多くの場合、データベースサーバー自体、または同じネットワーク上の常時稼働しているコンピューター)にエージェントをインストールします。インストールには1分ほどかかり、その後は自動的に起動します。
ドライバではなく、なぜ小さなプログラムを使うのか? エージェントは、Windows、Mac、Linux 用の単一のインストール(Windows では約 85 MB、Mac と Linux では 100 MB 強)で、バックグラウンドで静かに動作します。ブラウザと同様に、Query Streams への暗号化されたアウトバウンド接続を 1 回確立するため、ファイアウォールのポートを開放したり、VPN を設定したりする必要はありません。データベースはネットワーク上に保持され、必要に応じてインターネット経由でデータがどこにでも送信されます。ユーザー側で必要なのは、このアドオンだけです。
ダウンロードページには アクセスキーエージェントに求められたら貼り付け、バッジが読み取るまで待ちます。 クエリ ストリームに接続しましたエージェント本体で行う操作はそれだけです。
-
データベース接続を追加する
ポータルを開く データ → データエージェント、 クリック コネクタを追加する エージェントで、データベースの種類を選択し、ホスト、ポート、データベース、読み取り専用ログインを入力します。 接続テスト、そして セーブ接続は数秒以内にエージェントに到達します。各データベースには、正確なフィールドを示す独自のチュートリアルがあります。 MySQL, PostgreSQL, SQLサーバー, オラクルCloud SQL、Amazon RDS、Azureデータベースはすべて同じ方法で接続します。エージェントがそれらにアクセスできるだけで十分です。
IPアドレスの許可リストはありません。 エージェントは、ネットワーク内部からデータベースに接続し、HTTPS経由でクエリストリームに外部接続します。ファイアウォールに追加すべきGoogleアドレスのリストはなく、管理する必要のある設定もありません。
-
GoogleスプレッドシートからSQLを実行する
スプレッドシートを開いて クエリ ストリーム アドオンをインストールします まだの場合は、Google Workspace Marketplace から入手してください。すでにサインインしている Google アカウントが認識されるため、別途ログインする必要はありません。サイド パネルでクリックします。 クエリストリーマー接続を選択し、スクリプトに記述したのと同じSELECT文を貼り付けてください。
例:SQLセレクト 顧客ID、名前、都市 フロム お客様 注文 による 名称 リミット 1000;
以下のタブを選択してください 目的地一覧表 そしてクリック クエリーの実行行は列ヘッダーの下に表示されます。 クエリーの実行 最新のデータが必要な場合は、いつでも再度実行してください。シートを自動的に更新するには、クエリをクエリ ビルダーに保存し、 オートメーションこれは、5分ごとから週ごとまでのスケジュールで実行されます。
それでおしまい。 データはシート内に保存され、ワンクリックで常に最新の状態に保たれます。お客様が要求した行以外は、ネットワークから外部に送信されることはありません。
並んで、耐えられるものだけ
| Apps Script JDBC | クエリストリーム | |
|---|---|---|
| あなたが書いたもの | SQL をJavaScriptで囲む | SQL |
| クエリが実行される場所 | Googleのサーバー上で、データベースに接続します。 | エージェント上で、データベースの横に |
| データベースパスワード | スクリプトまたはそのプロパティ内で、編集可能な人なら誰でも読み取ることができます | エージェントのみで利用可能。Sheetsユーザーには表示されません。 |
| ファイアウォール | Googleが公開しているアドレス範囲、ポート1025以上を許可する | 受信はありません。エージェントはHTTPS経由で外部に接続します。 |
| 期限 | 1回の実行につき6分、カスタム関数の場合は30秒 | スクリプトのタイムアウトはありません。エージェントがクエリを実行し、行をストリーミングします。 |
| 割り当て | 1日あたり10,000または50,000のJDBC接続、90分または6時間のトリガー時間 | プランごとの月間データ容量は、無料プランでは5MBから。 |
| 同僚にデータを提供する | スクリプトと、それに含まれる認証情報をコピーしてください。 | クエリの結果を共有します。受信者はそれを実行しますが、ログイン情報は表示されません。 |
| スケジュールに基づいて更新する | 日次実行時間クォータ内の時間駆動型トリガー | 自動化、5分ごとから週ごと |
| データベース | MySQL、Cloud SQL、PostgreSQL、SQL Server、Oracle | これら5つに加えて、MariaDB、Snowflake、BigQuery、SQLite、Access、DuckDB、ファイルフォルダ、そしてStripe、HubSpot、ShopifyなどのAPIも含まれる。 |
計画で許可されている内容
Google スプレッドシートのアドオンからアドホック SQL を利用できます。無料プランも含め、すべてのプランで利用可能です。無料プランには 2 つの接続と、月間 5 MB のデータ容量が含まれており、上記のような表を 1 日に何度も更新するのに十分なデータ量です。アドオンのクエリ ビルダーで保存したクエリの実行は Personal Core プランから開始できます。同僚と共有したクエリは、すべてのプランで実行できます。 価格ページをご覧ください プランごとの手当について。
無料とは、あなたが守り続けるプランのことです。 これは期限付きのトライアルではありません。その内容については、 価格ページ.
人々が尋ねる質問
既存のApps Scriptをそのまま使用して、パスワードの問題だけを修正することはできますか?
はい。上記のサンプルにあるように、ユーザー名とパスワードをスクリプトのプロパティに移動し、データベースのログインに読み取り専用権限を付与してください。これで最悪の問題は解決します。ただし、6分間の制限、1日の接続クォータ、ファイアウォールの許可リストは変更されません。そのため、シートが複数のユーザーにとって重要になった場合、ほとんどの人はクエリをApps Scriptから移動します。
エージェントはデータベースサーバー上で実行する必要がありますか?
いいえ。データベースにアクセスできる常時稼働のコンピュータであればどれでも構いません。オフィス内のワークステーション、小型の仮想マシン、あるいはサーバー自体でも問題ありません。必要なのは、クエリストリームへの送信HTTPS接続のみです。
JDBCのメモリ上限のような行数制限はありますか?
エージェントは結果全体をスクリプトに保持するのではなく、行をストリーミング配信するため、実質的な上限はプランのデータ容量とGoogleスプレッドシート自体によって決まります。Googleスプレッドシートでは、スプレッドシートのセル数が2,000万個に制限されています(Googleが2026年9月に展開した制限がまだ適用されていないアカウントでは1,000万個)。必要な列と日付範囲のみにSELECT文を使用すれば、どちらも快適に利用できます。
私はCloud SQLを使用しています。何か違いはありますか?
エージェントが実行される場所でのみ動作します。エージェントは、Cloud SQLインスタンスにアクセスできるコンピュータまたは仮想マシンに配置します。アクセス方法は、エージェントのアドレスが承認されたパブリックアドレス経由でアクセスするか、同じネットワーク内に配置して、MySQL、PostgreSQL、またはSQL Serverとして接続します。管理すべきGoogleアドレス範囲はありません。
スプレッドシートを使用するコンピューターに、あなたのデータベースをインストールしておく必要がありますか?
いいえ。エージェントだけが、お客様のデータベースと同じ場所に存在する必要があります。Google スプレッドシートは、どのデバイスのブラウザでも動作します。同じ Google アカウントでアドオンを開けば、接続情報が表示されます。
私のデータはクエリストリームにコピーされますか?
いいえ。エージェントはデータが存在する場所でクエリを実行し、返された行のみを送信します。その間に同期や保存は一切行われません。
無料プランで本当にこれがカバーされるのですか?
はい。無料プランは継続して利用できるプランで、期限切れのトライアルではありません。プランに含まれる内容については、 価格ページ.
シートは自動的に更新されますか?
最新の行を取得したい場合は、いつでも「クエリの実行」を再度クリックしてください。ユーザーが何も操作しなくてもスケジュールに基づいてシートが更新されるようにするには、クエリ ストリーム ポータル(ストリーム → 自動化)で自動化を設定します。これはすべてのプランに含まれています。
関連ガイド
Setup trouble?
- Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?

