【问题标题】:Connect Google Sheets to MySQL on Localhost将 Google 表格连接到 Localhost 上的 MySQL
【发布时间】:2021-08-12 13:16:03
【问题描述】:

刚刚在本地安装了 MySQL,并创建了一个数据库和一个简单的表。我现在正在尝试从 Google 表格连接到它,但它失败并出现错误:

{ [Exception: Invalid argument: url] name: 'Exception' } undefined

后来谷歌搜索了很多,似乎因为表格在谷歌服务器上运行,它无法将 localhost 解析为主机。

有没有办法解决这个问题?

var HOST      = 'localhost';
var PORT      = '3306';
var USERNAME  = 'xxxx';
var PASSWORD  = 'xxxx';
var DATABASE  = 'investment';
var DB_TYPE   = 'mysql';
var MAXROWS   = 1000;

function testConnection(){
    var sql = doc.getRange('query!a2').getDisplayValue();
    var options = {};
}
function runSql(query, options) {
    try {
        var fullConnectionString = 'jdbc:' + DB_TYPE + '://' + HOST + ':' + PORT;
        var conn = Jdbc.getConnection(fullConnectionString, USERNAME, PASSWORD);
        Logger.log('conn :', conn);
        Logger.log('query :', query);
        var stmt = conn.createStatement();
        stmt.execute('USE ' + DATABASE);
        var start = new Date();
        var stmt = conn.createStatement();
        stmt.setMaxRows(MAXROWS);
        var rs = stmt.executeQuery(query);
    } catch (e) {
        console.log(e, e.lineNumber);
        Browser.msgBox(e);
        return false;
    }
}

只是想知道,如果我能找到一种在线获取我的 IPv4 地址的方法(因为我认为它是 DHCP,所以会定期更改),我可以使用像 101.146.72.23/localhost 这样的主机吗? (不是我的真实 IP

[编辑]我尝试像上面那样添加我的 IPv4 地址,也许这让我更近了一步,因为现在我得到了一个不同的错误:

{ [Exception: Failed to establish a database connection. Check connection string, username and password.] name: 'Exception' } undefined

在阅读Google: JDBC 时,它指出“为了使用 JDBC 服务创建数据库连接,您必须在数据库设置中允许列出某些 IP 范围,以允许 Apps 脚本访问它。这些是您需要加入白名单的地址范围。"

现在正在搜索如何在 Windows 10 中执行此操作。

[编辑 2] 为需要执行此操作的任何其他人报告进度。按照@Julian Benavides 的建议,我找到了一个关于如何Add Port Forwarding on Telstra Smart Modem 的链接。这篇文章指出我的电脑需要一个静态 IP 地址(在本地网络上),How to Setup a Static IP Address on a Computer

认为我已经成功连接,但现在我必须弄清楚我为什么会出错:

Exception: Table 'investment.investment_type' doesn't exist

越来越近了,但还没有雪茄。

[编辑 3 - 成功!]我输入了错误的表名,现在可以使用了!

【问题讨论】:

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


    【解决方案1】:

    您是否配置了端口转发或 DMZ 访问?如果您在家配置并访问路由器或联系您的 ISP,或者如果您在公司联系网络管理员。

    通过这种方式,您的 ip 可以在 Internet 中解析并通过 jdbc 连接访问。

    【讨论】:

    • 嗨,朱利安。在澳大利亚,我通过 Telstra(一个 ISP)连接到我们的“国家宽带网络”(NBN)。调制解调器也由 Telstra 提供。我不知道什么是端口转发或 DMZ,你能建议在网上的任何地方获取一些信息吗?
    • Telstra (un ISP) 可以帮助你,联系他们,更多信息telstra.com.au/platinum-technical-support/articles/…
    • 谢谢,我尝试连接到 10.0.0.138 上的调制解调器,但没有响应。现在是凌晨 2 点,所以我明天会尝试联系 Telstra。干杯,马克斯
    • 最后,在浏览了很多过时的指令后,我在 192.168.0.1 上连接到 Smart Modem Gen 2,然后将 MySQL 的端口转发 (3306) 条目添加到新创建的静态我机器上的 IP。
    【解决方案2】:

    关于如何解决问题的简短摘要 - 更多信息请参阅原始帖子中的更新。

    1. 代码我用的很接近Ben Collins - How To Connect Google Sheets To A Database, Using Apps Script
    2. @Julian Benavides 指出我需要添加 端口转发,在 Setup a Port Forward on the Telstra Smart Modem Gen 2 Router 找到了如何做到这一点
    3. 必须在我的本地网络上为运行 MySQL 的机器分配一个 静态 IP,来自 How to Setup a Static IP Address

    希望这对像我这样的新手有用。 :)

    【讨论】:

    • 你好,我自己也有类似的情况,需要一些解释:如果我愿意在应用脚本中手动更改它,是否需要设置静态 IP 地址(我只需要设置它进行演示),如果不是我只需要做端口转发部分?
    猜你喜欢
    • 2012-11-12
    • 1970-01-01
    • 2012-10-19
    • 2018-02-22
    • 2010-09-27
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 2017-04-23
    相关资源
    最近更新 更多