На этой странице объясняется свойство 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 Календаря см. в справочной документации .
Создайте и настройте сценарий
- Создайте сценарий, перейдя по ссылке script.google.com/create .
- На левой панели рядом с пунктом Услуги нажмите услугу.
- Выберите API Календаря Google и нажмите Добавить .
- После включения API отображается на левой панели. Доступные методы и классы API можно просмотреть с помощью ключевого слова Calendar в редакторе.
(Необязательно) Обновите проект Google Cloud
С каждым проектом Google Apps Script связан проект Google Cloud. Ваш скрипт может использовать проект по умолчанию, который Google Apps Script автоматически создаёт. Если вы хотите использовать пользовательский проект Google Cloud, см . раздел Переключение на другой стандартный проект Cloud . После настройки проекта Google Cloud выберите « Редактор слева, чтобы вернуться в редактор кода.
Добавить код в скрипт
В следующем примере кода показано, как перечислять, читать и создавать события с различными значениями eventType
.
Вставьте следующий код в редактор кода.
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 , чтобы получить идентификаторы событий.
-
Запустить пример кода
- Над редактором кода выберите в раскрывающемся меню функцию, которую необходимо запустить, и нажмите кнопку Выполнить .
- При первом запуске вам будет предложено разрешить доступ. Проверьте и разрешите Apps Script доступ к вашему календарю.
- Результаты выполнения скрипта можно просмотреть в журнале выполнения , который отображается в нижней части окна.