#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 Нет. Я подтвердил, что даже при
!!
добавлении имени календаря скрипт работает нормально.