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