Введение в Google Apps Script и Календарь Google
Что такое Google Apps Script?
Google Apps Script – это облачная платформа для разработки, позволяющая автоматизировать задачи и расширять функциональность Google Workspace (например, Google Sheets, Docs, Calendar и Gmail). Скрипты пишутся на основе JavaScript и могут взаимодействовать с различными сервисами Google и сторонними API.
Обзор сервиса Calendar в Google Apps Script
Сервис Calendar в Google Apps Script предоставляет программный интерфейс для управления календарями Google. С его помощью можно создавать, читать, обновлять и удалять события, а также управлять настройками календарей. Это позволяет автоматизировать рутинные задачи, такие как создание отчетов о событиях, рассылка напоминаний или интеграция календаря с другими системами.
Необходимые разрешения для доступа к календарю
Для работы с сервисом Calendar скрипту необходимо получить разрешение на доступ к вашему календарю. Это разрешение запрашивается автоматически при первом запуске скрипта, который использует Calendar API. Пользователь должен явно предоставить разрешение на доступ к своим календарям.
Получение списка событий из Календаря Google
Подключение к вашему Календарю Google с помощью Apps Script
Для начала работы необходимо создать новый проект Google Apps Script (через Google Sheets, Docs или напрямую через script.google.com). В редакторе скриптов можно начинать писать код.
Получение объекта Calendar и выбор календаря (по ID или имени)
/**
* Получает объект Calendar по ID или имени.
*
* @param {string} calendarIdOrName ID или имя календаря.
* @returns {GoogleAppsScript.Calendar.Calendar} Объект Calendar.
*/
function getCalendar(calendarIdOrName: string): GoogleAppsScript.Calendar.Calendar {
try {
// Пытаемся получить календарь по ID.
return CalendarApp.getCalendarById(calendarIdOrName);
} catch (e) {
// Если не удалось, ищем по имени.
const calendars: GoogleAppsScript.Calendar.Calendar[] = CalendarApp.getCalendarsByName(calendarIdOrName);
if (calendars.length > 0) {
return calendars[0]; // Возвращаем первый найденный календарь с таким именем.
} else {
throw new Error(`Calendar with ID or name '${calendarIdOrName}' not found.`);
}
}
}
// Пример использования:
const calendar: GoogleAppsScript.Calendar.Calendar = getCalendar('your_calendar_id@gmail.com'); // Замените на ID своего календаря
Logger.log(calendar.getName());
Запрос событий из календаря за определенный период времени
/**
* Получает события из календаря за указанный период времени.
*
* @param {GoogleAppsScript.Calendar.Calendar} calendar Объект Calendar.
* @param {Date} startDate Дата начала периода.
* @param {Date} endDate Дата окончания периода.
* @returns {GoogleAppsScript.Calendar.CalendarEvent[]} Массив объектов CalendarEvent.
*/
function getEvents(calendar: GoogleAppsScript.Calendar.Calendar, startDate: Date, endDate: Date): GoogleAppsScript.Calendar.CalendarEvent[] {
return calendar.getEvents(startDate, endDate);
}
// Пример использования:
const now: Date = new Date();
const nextWeek: Date = new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000); // Через неделю
const events: GoogleAppsScript.Calendar.CalendarEvent[] = getEvents(calendar, now, nextWeek);
Logger.log(events.length + ' events found.');
Фильтрация событий по критериям (например, по названию)
«`javascript
/**
- Фильтрует события по названию.
* - @param {GoogleAppsScript.Calendar.CalendarEvent[]} events Массив объектов CalendarEvent.
- @param {string} searchTerm Строка для поиска в названии события.
- @returns {GoogleAppsScript.Calendar.CalendarEvent[]} Отфильтрованный массив объектов CalendarEvent.
*/
function filterEventsByTitle(events: GoogleAppsScript.Calendar.CalendarEvent[], searchTerm: string): GoogleAppsScript.Calendar.CalendarEvent[] {
return events.filter(event => event.getTitle().toLowerCase().includes(searchTerm.toLowerCase()));
}
// Пример использования:
const filteredEvents: GoogleAppsScript.Calendar.CalendarEvent[] = filterEventsByTitle(events, ‘Meeting’);
Logger.log(filteredEvents.length + ‘ events containing