Gmorning, ladies and gentlemans.
Ось виправлений та оптимізований скрипт. Я додав перевірку на
існування календаря (щоб код не "падав"), виправив логічну помилку з
викликом функцій створення і зробив код чистішим.
JavaScript
/**
* Створює подію в Google Календарі з автоматичним кодуванням кольором
та нагадуваннями.
* * @param {string} id - ID календаря.
* @param {string} msg - Назва події.
* @param {Date} start - Об'єкт Date початку.
* @param {Date} end - Об'єкт Date кінця.
* @param {string} desc - Опис події.
* @param {boolean} silent - Чи вимикати сповіщення.
*/
function createManagedEvent(id, msg, start, end, desc, silent) {
let cal = CalendarApp.getCalendarById(id);
// 1. Перевірка наявності календаря
if (!cal) {
console.error("Календар з ID " + id + " не знайдено. Спробуйте
використати 'primary'.");
// Якщо у вас є функція створення календаря, її можна викликати тут:
// cal = createCalIfNotFound('Work');
return; // Зупиняємо виконання, якщо календаря немає
}
// 2. Створення події
let event = cal.createEvent(msg, start, end, {
location: 'Plex',
description: desc
});
// Перетворюємо назву в рядок для надійної перевірки match()
let subject = msg.toString().toLowerCase();
// 3. Логіка сповіщень та кольорів
if (!silent) {
// Додаємо стандартні нагадування
event.addPopupReminder(2)
.addEmailReminder(5);
// Встановлюємо колір залежно від змісту (використовуємо RegExp
для точності)
if (/lunch/.test(subject)) {
event.setColor(CalendarApp.EventColor.CYAN); // Блакитний
}
else if (/break\d/.test(subject)) {
event.setColor(CalendarApp.EventColor.ORANGE); // Помаранчевий
}
else if (/return/.test(subject)) {
event.setColor(CalendarApp.EventColor.GREEN); // Зелений
}
else {
event.setColor(CalendarApp.EventColor.MAUVE); // Бузковий
}
}
else {
// "Тихий" режим: видаляємо все зайве
event.removeAllReminders();
}
console.log("Подію створено: " + msg);
}
// Приклад виклику функції:
// createManagedEvent('ваш_id_тут', 'Lunch with Team', new Date(), new
Date(Date.now() + 3600000), 'Meeting at Plex', false);
вт, 24 бер. 2026 р. о 10:13 David Soule <
sirdave...@gmail.com> пише:
> To view this discussion visit
https://groups.google.com/d/msgid/google-apps-script-community/CAD%2Bu0mzKnH%3DG0Ono%3DJ8oyk%2BAgN%3D-jZbn%3D3jrd1PsrFLV3os4Ew%40mail.gmail.com.
--
З найкращими побажаннями,
Ілля Чернов