google-apps-скрипт | ошибка ввода для getEvents()

#google-apps-script

#google-apps-script

Вопрос:

У меня есть календарь с именем «ВАЖНО !!», который при добавлении в мой код приводит к тому, что он не работает (ошибки нет, функция просто ничего не делает). Я думаю, что эта проблема вызвана!! символы в конце имени, но я не знаю, в чем эта проблема или как ее исправить. Что мне следует сделать, чтобы избежать этой проблемы?

 function myFunction() {  
var year = 2019;
var month = 0;

var fromDate = new Date(year,month,1,0,0,0);
var toDate = new Date(year,month,28,0,0,0);



  var theCalendar = CalendarApp.getCalendarsByName('IMPORTANT!!')[0];
  var events = theCalendar.getEvents(fromDate, toDate);


  for(var i = 0; i < events.length; i  ){
    var ev = events[i];
    ev.deleteEvent();
  }

}
  

Как мне исправить ошибку, чтобы мой скрипт удалял все события из календаря Google, опубликованные в «def» в январе 2019 года.

Ответ №1:

getCalendarsByName() возвращает Calendar[] массив. Итак, если имя календаря def только одно в ваших календарях, как насчет следующих изменений?

От:

 var theCalendar = CalendarApp.getCalendarsByName('def');
  

Для:

 var theCalendar = CalendarApp.getCalendarsByName('def')[0];
  

Примечание:

  • Если у вас есть несколько календарей с одинаковым именем календаря, я рекомендую использовать идентификатор календаря.
  • В результате, когда отображается имя метода, обнаруживается, что «Календари» из «getCalendarsByName» является множественным числом. При этом может быть замечено, что будет возвращено несколько значений.

Ссылка:

Редактировать 1:

Что касается вашего нового вопроса, если events у него нет элементов, цикл for не работает.

Я думаю, что это может быть причиной вашей новой проблемы. Пожалуйста, подтвердите это.

Когда события могут быть получены с помощью theCalendar.getEvents(fromDate, toDate) . eleteEvent() в цикле for будет работать.

Редактировать 2:

Вы можете получить идентификаторы календаря и названия всех календарей, используя следующий скрипт.

Пример сценария:

 var result = CalendarApp.getAllCalendars().map(function(e) {return {id: e.getId(), name: e.getName()}});
Logger.log(result);
  

Результат:

 [
  {
    "id": "### calendarId1 ###",
    "name": "### calendarName1 ###"
  },
  {
    "id": "### calendarId2 ###",
    "name": "### calendarName2 ###"
  },
  ,
  ,
  ,
]
  

Комментарии:

1. да, это помогло, но теперь у меня возникла другая проблема, описанная выше ^^

2. @brothman @brothman Спасибо за ответ. Я удивлен, что ваш вопрос внезапно изменился. Во-первых, могу я спросить вас о I am getting an error for 'getEvents()' which is a function that I have used before. том, был ли решен ваш первоначальный вопрос?

3. @brothman я обновил свой ответ на ваш новый вопрос. Не могли бы вы подтвердить это, пожалуйста?

4. календарь ВАЖЕН!! имеет много событий, возможно ли, что проблема возникает из-за «!!»?

5. @brothman Нет. Я подтвердил, что даже при !! добавлении имени календаря скрипт работает нормально.