Типы событий

На этой странице объясняется свойство eventType и характеристики типов событий, доступных в API Календаря Google.

Google Calendar позволяет пользователям создавать общие события, а также события, предназначенные для конкретных случаев использования и имеющие пользовательские свойства.

Тип события можно узнать в следующих местах API:

  • Все события возвращаются с eventType .
  • При создании или обновлении ресурса события необходимо задать eventType . Если не задано, будет использоваться тип 'default' .
  • eventTypes можно указать в вызове Events:list для вывода списка событий определённых типов. Если тип не указан, будут возвращены все типы событий.
  • В вызове Events:watch можно указать eventTypes , чтобы подписаться на обновления событий определённых типов. Если тип не указан, запрос приведёт к подписке на все типы событий.

Событие по умолчанию

События с типом default » создаются и используются как один из основных ресурсов API Google Календаря. Они поддерживают широкий набор свойств , которые можно использовать для дальнейшей настройки события.

Ознакомьтесь с разделом Создание событий , чтобы начать работу с событиями Календаря Google.

День рождения

Дни рождения — это особые события, длящиеся целый день и повторяющиеся ежегодно.

Пользователи могут вручную создавать события, связанные с днями рождения, в Google Календаре. Кроме того, информация о днях рождения синхронизируется с Google Календарем, когда пользователи добавляют человека и указывают его день рождения и другие знаменательные даты в Google Контактах . День рождения пользователя также синхронизируется с Google Календарем из его профиля учётной записи Google .

API Google Календаря поддерживает методы get , instances и list для чтения событий, связанных с днями рождения. eventTypes можно задать значение 'birthday' , чтобы отображать только события, связанные с днями рождения. Если тип не указан, дни рождения будут отображаться вместе со всеми остальными типами событий.

В возвращенных объектах Event проверьте поле birthdayProperties для получения более подробной информации об этом особом событии. birthdayProperties имеет следующие поля:

  • type : Тип особого события, будь то день рождения, годовщина или другая знаменательная дата.
  • customTypeName : указанная пользователем метка для этого особого события. Заполняется, если type события — 'custom' .
  • contact : Имя ресурса контакта, с которым связано это специальное событие, если таковое имеется. Имеет формат 'people/c12345' и может использоваться для получения контактной информации из API People .

API позволяет создавать события дня рождения с помощью метода insert со следующими характеристиками:

  • eventType установлен на 'birthday' .
  • Поля start и end должны определять событие на целый день, охватывающее ровно один день.
  • Значение поля visibility должно быть 'private' .
  • Значение поля transparency должно быть 'transparent' .
  • Необходимо обеспечить ежегодное повторение, то есть поле recurrence должно быть 'RRULE:FREQ=YEARLY' . Для дней рождения, приходящихся на 29 февраля, должно быть задано следующее правило повторения: 'RRULE:FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=-1' .
  • Может иметь colorId , summary и reminders .
  • Может иметь birthdayProperties . Если указано, type должен быть 'birthday' , а customTypeName и contact должны быть пустыми.
  • Не может иметь никаких других свойств события.

API позволяет обновлять colorId , summary и reminders о днях рождения с помощью методов update и patch . Поля start и end также можно обновить для изменения даты события. В этом случае новые значения должны определять событие, которое длится целый день и охватывает ровно один день. Информация о времени дня рождения не может быть обновлена, если событие связано с contact или имеет type 'self' .

API Google Календаря не позволяет создавать события, связанные с днями рождения, с помощью настраиваемых свойств birthdayProperties или обновлять эти свойства. Знаменательные даты можно редактировать с помощью API People , и эти изменения синхронизируются с Google Календарем. Аналогичным образом, пользователи могут редактировать свой день рождения в профиле своей учётной записи Google , и он синхронизируется с Google Календарем.

Запросы на создание или обновление дня рождения неподдерживаемым способом не будут выполнены. В этом случае проверьте сообщение об ошибке, чтобы определить проблему.

API поддерживает import событий, связанных с днями рождения; однако событие будет импортировано как событие по умолчанию. Другими словами, eventType будет иметь значение 'default' .

API поддерживает метод watch для подписки на изменения событий, связанных с днями рождения, в Google Календаре. eventTypes можно задать значение 'birthday' , чтобы подписаться на обновления событий, связанных с днями рождения. Если тип не указан, подписка будет осуществляться на все типы событий, включая дни рождения.

Дни рождения можно удалить с помощью метода delete API Google Календаря. Удаление дня рождения из Google Календаря не влияет на данные в Google Контактах или профиле учётной записи Google .

Изменение организатора мероприятия по случаю дня рождения с помощью методов move или update не поддерживается.

События из Gmail

События, автоматически генерируемые из Gmail, имеют тип события 'fromGmail' .

API Календаря Google не позволяет создавать этот тип событий с помощью метода insert .

API позволяет обновлять colorId , reminders , visibility , transparency , status , attendees , private и shared расширенные свойства с помощью методов update и patch .

API поддерживает методы get и list для чтения событий из Gmail. Для eventTypes можно задать значение 'fromGmail' чтобы отображать только события, сгенерированные из Gmail. Если тип не указан, события из Gmail будут отображаться вместе со всеми остальными типами событий.

API поддерживает метод watch для подписки на изменения событий из Gmail в Google Календаре. Если тип не указан, подписка будет осуществляться на все типы событий, включая 'fromGmail' .

События из Gmail можно удалить с помощью метода delete API Календаря Google.

Изменение организатора мероприятия из Gmail с помощью методов move или update не поддерживается.

Время концентрации внимания, вне офиса и рабочее место

API Календаря Google можно использовать для создания и управления событиями, отображающими статус пользователей Календаря Google.

Эти функции доступны только в основных календарях и некоторым пользователям Google Календаря. Подробнее см. в разделе Управление временем концентрации, отсутствием на рабочем месте и событиями, связанными с рабочим местоположением .

Изучите типы событий в Google Apps Script

Google Apps Script — это язык облачных скриптов на основе JavaScript, позволяющий создавать бизнес-приложения, интегрируемые с Google Workspace. Скрипты разрабатываются в браузерном редакторе кода и хранятся и запускаются на серверах Google. См. также краткое руководство по Google Apps Script , чтобы начать использовать Apps Script для отправки запросов к API Google Календаря.

Ниже приведены инструкции по чтению и управлению событиями с помощью API Google Календаря как расширенного сервиса в Google Apps Script. Полный список ресурсов и методов API Google Календаря см. в справочной документации .

Создайте и настройте сценарий

  1. Создайте сценарий, перейдя по ссылке script.google.com/create .
  2. На левой панели рядом с пунктом Услуги нажмите услугу.
  3. Выберите API Календаря Google и нажмите Добавить .
  4. После включения API отображается на левой панели. Доступные методы и классы API можно просмотреть с помощью ключевого слова Calendar в редакторе.

(Необязательно) Обновите проект Google Cloud

С каждым проектом Google Apps Script связан проект Google Cloud. Ваш скрипт может использовать проект по умолчанию, который Google Apps Script автоматически создаёт. Если вы хотите использовать пользовательский проект Google Cloud, см . раздел Переключение на другой стандартный проект Cloud . После настройки проекта Google Cloud выберите « Редактор слева, чтобы вернуться в редактор кода.

Добавить код в скрипт

В следующем примере кода показано, как перечислять, читать и создавать события с различными значениями eventType .

  1. Вставьте следующий код в редактор кода.

    const CALENDAR_ID = 'CALENDAR_ID' || 'primary';
    
    /** Lists default events. */
    function listDefaultEvents() {
      listEvents('default');
    }
    
    /** Lists birthday events. */
    function listBirthdays() {
      listEvents('birthday');
    }
    
    /** Lists events from Gmail. */
    function listEventsFromGmail() {
      listEvents('fromGmail');
    }
    
    /**
      * Lists events with the given event type. If no type is specified, lists all events.
      * See https://developers.google.com/workspace/calendar/api/v3/reference/events/list
      */
    function listEvents(eventType = undefined) {
      // Query parameters for the list request.
      const optionalArgs = {
        eventTypes: eventType ? [eventType] : undefined,
        singleEvents: true,
        timeMax: '2024-07-30T00:00:00+01:00',
        timeMin: '2024-07-29T00:00:00+01:00',
      }
      try {
        var response = Calendar.Events.list(CALENDAR_ID, optionalArgs);
        response.items.forEach(event => console.log(event));
      } catch (exception) {
        console.log(exception.message);
      }
    }
    
    /**
      * Reads the event with the given eventId.
      * See https://developers.google.com/workspace/calendar/api/v3/reference/events/get
      */
    function readEvent() {
      try {
        var response = Calendar.Events.get(CALENDAR_ID, 'EVENT_ID');
        console.log(response);
      } catch (exception) {
        console.log(exception.message);
      }
    }
    
    /** Creates a default event. */
    function createDefaultEvent() {
      const event = {
        start: { dateTime: '2024-07-30T10:30:00+01:00'},
        end: { dateTime: '2024-07-30T12:30:00+01:00'},
        description: 'Created from Apps Script.',
        eventType: 'default',
        summary: 'Sample event',
      }
      createEvent(event);
    }
    
    /** Creates a birthday event. */
    function createBirthday() {
      const event = {
        start: { date: '2024-01-29' },
        end: { date: '2024-01-30' },
        eventType: 'birthday',
        recurrence: ["RRULE:FREQ=YEARLY"],
        summary: "My friend's birthday",
        transparency: "transparent",
        visibility: "private",
      }
      createEvent(event);
    }
    
    /**
      * Creates a Calendar event.
      * See https://developers.google.com/workspace/calendar/api/v3/reference/events/insert
      */
    function createEvent(event) {
    
      try {
        var response = Calendar.Events.insert(event, CALENDAR_ID);
        console.log(response);
      } catch (exception) {
        console.log(exception.message);
      }
    }
    

    Заменить следующее:

    • CALENDAR_ID : адрес электронной почты календаря для получения и создания событий. Эта константа изначально имеет значение 'primary' , что является ключевым словом для доступа к основному календарю вошедшего в систему пользователя. Изменение этого значения позволяет читать события в календарях других пользователей, к которым у вас есть доступ.
    • EVENT_ID : идентификатор события. Вы можете вызвать Events:list , чтобы получить идентификаторы событий.

Запустить пример кода

  1. Над редактором кода выберите в раскрывающемся меню функцию, которую необходимо запустить, и нажмите кнопку Выполнить .
  2. При первом запуске вам будет предложено разрешить доступ. Проверьте и разрешите Apps Script доступ к вашему календарю.
  3. Результаты выполнения скрипта можно просмотреть в журнале выполнения , который отображается в нижней части окна.