0

mysql データベース クエリの出力を Google スプレッドシートのセルに入力したいので、Google チュートリアルの例に従って、この簡単なスクリプトを作成しました。

function get_tbs_number() {
    var conn = Jdbc.getConnection("jdbc:mysql://127.0.0.1:9008/icadata");
    var stmt = conn.createStatement();
    stmt.setMaxRows(100);
    var start = new Date();
    var rs = stmt.executeQuery("select count(*) from CNGSfiltered where run=10269 and (GTO1>4 or GTO2>4 or GTO3>4 or GTO4>4);");
    var doc = SpreadsheetApp.getActiveSpreadsheet();
    var cell = doc.getRange('a1');
    cell.offset(0, 0).setValue(rs.getString(1));
    rs.close();
    stmt.close();
    conn.close();
    var end = new Date();
    Logger.log("time took: " + (end.getTime() - start.getTime()));
}

問題は、スクリプトを実行しようとすると、データベースへの接続エラーが発生する一方で、コマンド ライン (mysql -h localhost -P 9008 -u # -p# icadata) から同じデータベースへの接続が機能することです。

4

1 に答える 1

0

問題は、Google が にアクセスできないこと127.0.0.1です。ルーターで mysql ポート (9008) を開いてみてください。次に、www.whatismyip.com を使用してパブリック IP アドレスを取得します。

"jdbc:mysql://<myPublicIP>:9008/icadata"

次に、Google IP を含む sql grant コマンドを実行するか、% を使用する必要があります (あまり安全ではありません)。

grant all on icadata.* to '<user>'@'<google ips>' identified by '<password>';

幸運を!ここにいくつかの参照があります: https://developers.google.com/apps-script/jdbc

于 2012-08-01T18:04:29.053 に答える