Доступ к электронной таблице в Google Script

Я пишу google script поверх электронной таблицы. Я хочу развернуть его как веб-приложение. Он показывает некоторые значения. К сожалению, с моим текущим кодом google напоминает мне:

TypeError: Невозможно вызвать метод "getSheetByName" из 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;
}

Ответ 1

В автономных webapps вы не можете использовать getActiveSpreadsheet, потому что никто не использует его активно... Вместо этого используйте SpreadsheetApp.openById('ID'), вы можете получить идентификатор в URL-адрес вашей таблицы, как в этом примере:

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

между key= и #, т.е. 0AnqSFd3iikE3d-------nZIV0JQQ0c1a3dWX1dQbGc

Ответ 2

Не нужно использовать идентификатор, просто попробуйте этот код (измените mygooglelocation на имя вашего Spreadsheet и диапазон ячеек. Очень хорошо для меня с картами google...

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