Функция createEvent, возвращающая ноль - PullRequest
1 голос
/ 29 октября 2019

Я писал код, чтобы можно было автоматизировать создание событий в календарях моих товарищей по команде. Для этого я создал форму с базовой информацией, поместил ее в электронную таблицу (чтобы мы могли делать другие вещи с этими журналами) и написал код, чтобы он мог автоматически создавать события в соответствующих календарях на основе ответов для формы.

Я столкнулся со многими проблемами (и это довольно простой код), но я новичок в кодировании, и я все еще нахожусь в паттерне обучения на основе ошибок.

Я столкнулся с ошибкой TypeError: Cannot read property 'getSheetByName' of null at AutCal(Código:26:13), но решил ее, проверив и переименовав лист с помощью кода.

Я протестировал каждую переменную, записал их значения, чтобы точно знать, что они были,написал гнездо цикла и сохранил его. Вот как выглядит код:

function AutCalTESTE() {

  var row = 2;
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Caledário (input) - Mirror');
  var marcado = spreadsheet.getRange(row, 10).getValue();
  var calendarID = spreadsheet.getRange(row, 2).getValue();
  var eventCall = CalendarApp.getCalendarById(calendarID);
  var STime = spreadsheet.getRange(row, 6).getValue();
  var ETime = spreadsheet.getRange(row, 7).getValue();

  while (calendarID!=''){
  while(marcado!=''){
  eventCall.createEvent('Painel',STime,ETime);
  marcado.setValue('OK');
  row++
  };
};
}

Прямо сейчас проблема, которую я не могу решить, заключается в том, что каждый раз, когда я отлаживаю код, он возвращает одну и ту же ошибку, но с методом .createEvent(),говоря, что он не может прочитать свойство в null.

Я немного растерялся, поэтому любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 29 октября 2019
// make sure this is the same value as the Calendar ID you want
var calendarID = spreadsheet.getRange(row, 2).getValue();
//add some logging
Logger.log(calendarID)

//make sure this doesn't return null, if the calendar ID is wrong it will
var eventCall = CalendarApp.getCalendarById(calendarID);
Logger.log(eventCall)

Если ваш calendarId неверен, у вас будет eventCall == null.

Именно поэтому вы получаете ошибку, пытаясь вызвать свойство null.

YourID календаря доступен в приложении «Календарь», в разделе «Настройки», а затем в настройках вашего календаря.

enter image description here

0 голосов
/ 04 ноября 2019

Просто обновление: я только что исправил проблему, которая возникла у меня, поэтому проблема заключалась в организации и использовании синтаксиса моего кода (в частности, переменных).

Вот как это происходит:

function AutCalTESTE(){
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('X');
var ref = spreadsheet.getRange(1, 12).getValue();
var row = ref;
var calendarID = spreadsheet.getRange(row, 2).getValue();

while (calendarID != ""){
var description = spreadsheet.getRange(row, 8).getValue();
var marcado = spreadsheet.getRange(row, 10).getValue();
CalendarApp.getCalendarById(calendarID).createEventFromDescription(description);
spreadsheet.getRange(row, 10).setValue('OK');
row++
spreadsheet.getRange(1, 12).setValue(row);
var calendarID = spreadsheet.getRange(row, 2).getValue();

};
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...