google-apps-script | TypeError для getEvents () - PullRequest
0 голосов
/ 11 апреля 2019

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

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 Ответ

0 голосов
/ 11 апреля 2019

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

От:

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

Кому:

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

Примечание:

  • Если у вас несколько календарей с одним и тем же именем, я рекомендую использовать идентификатор календаря.
  • В качестве точки, когда имя метода видно, обнаруживается, что «Calendars» для «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 ###"
  },
  ,
  ,
  ,
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...