2012-10-20 50 views
11

我正在電子表格的頂部寫一個谷歌腳本。 我想將它部署爲一個Web應用程序。 它顯示了一些值。 不幸的是,我當前的代碼,谷歌讓我想起:在Google腳本中訪問電子表格

TypeError: Cannot call method "getSheetByName" of null.

我不知道在哪裏的錯誤是。

下面的代碼

function doGet(e) { 
    var app = UiApp.createApplication().setTitle('Details'); 
    var ss = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; 
    var dataFromCell = ss.getRange("B4").getValue(); 

    var mypanel = app.createVerticalPanel(); 
    var label = app.createLabel(dataFromCell); 

    app.add(mypanel); 
    app.add(label); 

    return app; 
} 

回答

28

,因爲沒有人正在使用它,你不能使用getActiveSpreadsheet獨立的webapps ... 使用SpreadsheetApp.openById('ID')相反,你可以在此獲得的ID在電子表格中的URL像例如:

https://docs.google.com/spreadsheet/ccc?key=0AnqSFd3iikE3d-------nZIV0JQQ0c1a3dWX1dQbGc#gid=0 

key=#之間,即0AnqSFd3iikE3d-------nZIV0JQQ0c1a3dWX1dQbGc

+0

非常感謝你!!!!!!!!!!!!! 它的工作原理! 極好的例子! – user1761850

+0

不需要使用ID看我的解決方案... –

+0

:)「如果你不確定那麼爲什麼downvote我的答案?請重新考慮...」哦,我的上帝 –

2

不需要使用ID,只需嘗試此代碼(使用您的電子表格名稱和單元格範圍更改mygooglelocation。工作得很好,我與谷歌地圖...

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('mygooglelocation'); 
    var ss = SpreadsheetApp.getActive(); 
    var mylocationInfo = ss.getRange("A2:B4").getValues(); 
+1

恐怕你誤解了這個問題......這是關於webapps獨立運行在doGet /返回結構。如果你想證明你的觀點,請展示一個完整的例子。 –

+0

然後將是我的錯誤...我看到互聯網上關於getRange(...)。getValue()許多錯誤,我想這是同樣的問題... –

+0

如果你不確定那麼爲什麼downvote我的答案?請重新考慮...... –

相關問題