Типы событий

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

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

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

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

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

События с типом события 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' и может использоваться для получения контактной информации из People API .

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 или обновлять эти свойства. Важные даты можно редактировать с помощью People API , а изменения синхронизируются с Календарем 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

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

В следующих инструкциях описывается, как читать события и управлять ими с помощью Google Calendar API в качестве расширенной службы в 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. Если вы хотите использовать собственный проект 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/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/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/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. Результаты выполнения скрипта вы можете просмотреть в журнале выполнения , который появляется в нижней части окна.