从App脚本到本地MySQL的JDBC连接

时间:2019-07-27 00:05:13

标签: mysql jdbc google-apps-script google-sheets

我正在尝试将Google表格数据保存在本地MySQL中。但是我收到一个无法建立连接的错误。

function writeToDb() { 
  var host = '127.0.0.1';
  var port = '3306';
  var db = 'test';
  var url = "jdbc:mysql://" + host + ":" + port + "/" + db; 
  var data = getData();
  var headerstring = data[1];
  data = data[0];
  try {
  var conn = Jdbc.getConnection(url, "Outside", "Abc*234");
  conn.setAutoCommit(false);
  var sql = "INSERT INTO profile" +  headerstring;
  var stmt = conn.prepareStatement(sql);

  for (var r in data) {
    for (var c in data[r]) {
      stmt.setString(parseInt(c) + 1, data[r][c]);
    }
    stmt.addBatch();

  }

  var batch = stmt.executeBatch();

  conn.commit();
  conn.close();
  } catch (err) {
    SpreadsheetApp.getActive().toast(err.message);
  }

}

function getData() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName("Test1");
  var data = sheet.getDataRange().getValues();
  var header = data[0];
  var headerstring = header.join(",");
  headerstring = "(" + headerstring + ") values (";

  var questions = Array(header.length + 1).join("?").split();

  headerstring = headerstring + questions.join(",") + ")";

  Logger.log(headerstring);
  Logger.log(data.slice(1));
  return [data.slice(1), headerstring];
}

它在Jdbc.getConnection(url,“ Outside”,“ Abc * 234”)附近失败;

我已授予用户“外部”访问权限,如下所示。

CREATE USER 'Outside'@'%' IDENTIFIED BY 'Abc*234';
GRANT ALL PRIVILEGES ON test.* TO 'Outside'@'%'; 

我在这里想念什么?

MySQL的版本是8.0

1 个答案:

答案 0 :(得分:0)

我认为无法使用GAS JDBC连接到本地服务器。至少不是直接。您可能必须使用一些中间服务,才能通过安全隧道将服务器公开到公共网站,并使用该服务提供的任何凭据。