JDBC从数据库中读取... TypeError:无法调用null的方法“getRange”。 (第9行)

时间:2012-10-21 21:06:53

标签: google-apps-script

我希望有人可以帮助我从这里的数据库示例中获取JDBC脚本... https://developers.google.com/apps-script/jdbc ...使用我的数据库。

    function foo() {
      var conn = Jdbc.getConnection("jdbc:mysql://<host>:3306/<instance>", "user", "password");
      var stmt = conn.createStatement();
      stmt.setMaxRows(100);
      var start = new Date();
      var rs = stmt.executeQuery("select * from clients");

      var doc = SpreadsheetApp.getActiveSpreadsheet();
      var cell = doc.getRange('a1');
      var row = 0;
      while(rs.next()) {
        cell.offset(row, 0).setValue(rs.getString(1));
        cell.offset(row, 1).setValue(rs.getString(2));
        cell.offset(row, 2).setValue(rs.getString(3));
        cell.offset(row, 3).setValue(rs.getString(4));
        row++;
      }
      rs.close();
      stmt.close();
      conn.close();
      var end = new Date();
      Logger.log("time took: " + (end.getTime() - start.getTime()));
    }

我插入了我的服务器和用户信息,并将select *语句更改为我的数据库中的“clients”表。连接成功但我收到以下错误...

TypeError:无法调用null的方法“getRange”。 (第9行)

我的数据库中的表“clients”包含以下列...

     id, clientname, clientcontact, clientphone, clientnote

有人可以帮助我了解示例脚本中需要更改哪些内容才能使用我的clients表吗?我到目前为止还不是程序员...但是我想让它工作并使用它作为模板从mysql获取数据到谷歌电子表格,这样我就可以在我的谷歌网站上发布这张表。

谢谢!

1 个答案:

答案 0 :(得分:1)

此脚本应该从电子表格容器运行,或者至少可以访问电子表格以写入其结果。

所以你有两种可能性:

  1. 将您的脚本复制/粘贴到电子表格脚本编辑器中并从那里运行。

  2. 用openbyId(电子表格ID)替换spreadsheetApp.getActive  (有关详细信息,请参阅this other post)由于您的脚本与其使用的电子表格没有直接关系,因此您确实处于几乎相同的情况。