2012-10-20 9 views
11

Piszę skrypt google na wierzchu arkusza kalkulacyjnego. Chcę wdrożyć go jako aplikację internetową. Pokazuje niektóre wartości. Niestety, z mojego obecnego kodu, Google przypomina mi:Uzyskiwanie dostępu do arkusza kalkulacyjnego w Google Script

TypeError: Cannot call method "getSheetByName" of null.

nie mam pojęcia gdzie jest błąd.

Oto kod

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; 
} 

Odpowiedz

28

W autonomicznych webapps nie można używać getActiveSpreadsheet bo nikt nie używa go aktywnie ... Korzystając SpreadsheetApp.openById('ID') zamiast można uzyskać identyfikator w URL arkusza kalkulacyjnego, jak w tym Przykład:

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

między key= i #, tj 0AnqSFd3iikE3d-------nZIV0JQQ0c1a3dWX1dQbGc

+0

Dziękuję bardzo !!!!!!!!!!!!! To działa! Doskonały przykład! – user1761850

+0

nie trzeba używać ID zobacz moje rozwiązanie ... –

+0

:) "Jeśli nie masz pewności, dlaczego chcesz odpowiedzieć na moje pytanie?" Zastanów się ... "mój Boże –

2

Nie trzeba używać identyfikatora, po prostu spróbuj tego kodu (zmień mygooglelocation z nazwą arkusza kalkulacyjnego i zakresem komórek. Działa bardzo dobrze dla mnie z mapami google ...

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

Obawiam się, że źle zrozumiałeś pytanie ... chodziło o aplikacje internetowe działające niezależnie od arkusza kalkulacyjnego w doGet/struktura zwrotu. Jeśli chcesz udowodnić swoją rację, pokaż pełny przykład. –

+0

to będzie mój błąd ... Widziałem wiele błędów w Internecie na temat getRange (...). GetValue() i przypuszczam, że jest to ten sam problem ... –

+0

Jeśli nie masz pewności, dlaczego chcesz udzielić odpowiedzi? Proszę rozważyć ... –