Как да чета и съхранявам стойност на клетка за използване в скрипт на Sheets?

Имам скрипт, който извлича всички събития от календар и ги поставя в лист. Опитвам се да направя този скрипт динамичен, като препращам към клетка B2 в активния лист, така че да мога да променя идентификатора на календара, без да е необходимо всеки път да влизам в инструмента за скриптове.

ОРИГИНАЛЕН КОД:

var mycal = "[email protected]"; 

var cal = CalendarApp.getCalendarById(mycal);   

var events = cal.getEvents(new Date("January 1, 2017 23:59:59 CST"), new Date("January 1, 2018 23:59:59 CST"));

НОВ КОД:

var cal = CalendarApp.getCalendarById(SpreadsheetApp.getActiveSheet().getRange("B2").getValue()); 

var events = cal.getEvents(new Date("January 1, 2017 23:59:59 CST"), new Date("January 1, 2018 23:59:59 CST"));

Изпълнявайки новия код, продължавам да получавам грешката „TypeError: Cannot call method „getEvents“ of null.“ Предполагам, че има нещо общо с това, че „var cal“ не е настроен правилно. Някакви идеи?


person Nick    schedule 09.05.2017    source източник
comment
Използвайте Logger.log(SpreadsheetApp.getActiveSheet().getRange(B2).getValue()); за да проверите дали стойността, която получавате, всъщност е идентификаторът на календара   -  person Serge insas    schedule 09.05.2017
comment
Евентуално бихте могли да използвате подкана като тази SpreadsheetApp.getUi().prompt('Calendar ID', 'Enter Calendar ID', SpreadsheetApp.getUi().ButtonSet.OK)   -  person Cooper    schedule 10.05.2017
comment
Вашият код работи добре за мен, когато заменя собствения си идентификатор на календар в тестов лист. Предлагам ви също така да разгледате PropertiesService за съхраняване на променливи на документи: developers.google. com/apps-script/reference/properties   -  person Jordan Rhea    schedule 10.05.2017


Отговори (2)


За всеки любопитен, това беше решено, като просто направих следното.

  var mycal = SpreadsheetApp.getActiveSheet().getRange("c2").getValue(); // PULL CALENDAR ID FROM CELL
  var cal = CalendarApp.getCalendarById(mycal);
person Nick    schedule 13.03.2019

Имах същия проблем. Опитайте да промените getValue() с getDisplayValue()

person Thomas    schedule 24.03.2018