我想填写一个带有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)连接到同一个数据库时工作
答案 0 :(得分:0)
问题是Google无法访问127.0.0.1
。尝试在路由器上打开mysql端口(9008)。然后使用www.whatismyip.com获取您的公共IP地址。
"jdbc:mysql://<myPublicIP>:9008/icadata"
然后,您可能必须运行包含谷歌IP或使用%(不太安全)的sql grant命令。
grant all on icadata.* to '<user>'@'<google ips>' identified by '<password>';
祝你好运!以下是一些参考:https://developers.google.com/apps-script/jdbc