2012-10-21 15 views
2

我希望有人可以幫助我獲取JDBC腳本從數據庫中讀取示例... https://developers.google.com/apps-script/jdbc ...使用我的db。JDBC從數據庫中讀取... TypeError:無法調用null的方法「getRange」。 (第9行)

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號線)

表「客戶」在我的數據庫具有以下的列...

 id, clientname, clientcontact, clientphone, clientnote 

有人可以幫助我理解需要在示例腳本改變什麼,它與工作我的客戶表?我不是目前的程序員......但我希望得到這個工作,並將其用作從mysql獲取數據到Google電子表格中的模板,然後我可以在我的谷歌網站上發佈該工作表。

謝謝!

+0

錯誤消息說變量'doc'爲空......您是否在電子表格中運行此腳本? (對不起,如果我的問題似乎微不足道,但我不能肯定沒有問) –

+0

不,我正在運行腳本,直接在我的驅動器中打開它。我在雲端硬盤中創建了腳本並保存了它。然後我去插入腳本到我創建名爲「mysqltest」的電子表格中,但我沒有看到我的腳本在畫廊中,我只看到其他人創建的腳本。 – user1763612

回答

1

此腳本應該從電子表格容器運行,或者至少可以訪問電子表格以編寫其結果。

所以,你有兩種方式:

  1. 複製/粘貼你的腳本在電子表格中的腳本編輯器,並從那裏運行它。

  2. 更換spreadsheetApp.getActive與openbyId(表格ID) (有關詳細信息,請參閱this other post)你確實是在幾乎相同的情況下,因爲你的腳本不直接關係到它使用的電子表格。

+0

非常感謝!我按照建議使用了openbyid(電子表格ID),代碼現在可以正常工作,並且正在填充測試表! – user1763612

+0

這確實可能是最好的選擇......(至少我也選擇了!)很高興它幫助:-) –

+0

謝謝塞爾。是的,openbyid是治癒!我從計時器觸發器調用它,所以顯然沒有活動的電子表格!這解釋了爲什麼它在調試模式下打開時沒有運行,但沒有在「prod」中單獨運行。 – harvest316

相關問題