Как получить список событий календаря Google с помощью Google Apps Script?

Введение в 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


Добавить комментарий