1

私 (user1) は、次のように Cloud SQL インスタンスに接続する Apps Script を持っています。

var conn = Jdbc.getCloudSqlConnection("jdbc:google:rdbms://blah:instance1/foo")

そして、それは魅力のように機能します。このスクリプトをライブラリとして共有し、将来的に収益化しようとしています。

別のユーザー (user2) としてログインしてライブラリとして追加すると、ライブラリが接続を試みる関数を実行すると失敗します。

Failed to establish a database connection. Check connection string, username and password.

そのため、接続を実行するコードが user1 が所有するライブラリから来ているにもかかわらず、接続が user2 から来ているように見えます。本当?user2 を編集者として Cloud SQL インスタンスに追加する以外に、これを機能させる方法はありますか?

4

1 に答える 1

1

はい、これは予想される動作です。ライブラリが別のユーザーによって所有されているかどうかは、実際には問題ではありません。cloud-sql jdbc コネクタは、有効なユーザーがデータベースを編集できる場合にのみ接続を承認します。

これを回避するには、この「ライブラリ」を webapp に変換し、自分として実行し、匿名であっても誰とでも共有します。これは、HTTP パラメーター (GET または POST) を介してデータベースへのクエリとコマンドを受け入れます。この Web アプリケーションは、利用可能な任意のテキスト形式でContentServiceを使用して結果を返します。Apps Script で通常の js オブジェクトを使用して通信を行うことができるため、最も簡単なのは JSON だと思います。JSON.stringifyJSON.parse

物事を簡単にするために、この webapp にアクセスするためのライブラリを作成し、最初のスクリプトにあるUrlFetch呼び出しとパラメーターを抽象化し、他のスクリプトによる簡単な「ネイティブ」プラグインを許可します。

于 2013-06-16T20:52:20.263 に答える