Перейти к основному содержимому

Google Календарь

API-методы для синхронизации событий Google Календаря с конструктором.

Авторизация

Все запросы требуют API-ключа конструктора — см. Авторизация. Дополнительно нужны данные сервисного Google-аккаунта — см. Google Календарь.


Синхронизация событий

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

Используется для управления ботом при добавлении / изменении / удалении мероприятий в Google Календаре.

Когда применять

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

Аналогичный метод доступен в действии Google Календарь — если работаете внутри сценария, проще использовать его.

ПараметрЗначение
МетодGET, POST
Endpoint/gcalendar/sync

Параметры запроса

ПолеТипОбязательныйОписание
client_emailstringДаclient_email из JSON-файла сервисного аккаунта Google.
private_keystringДаprivate_key из JSON-файла сервисного аккаунта Google.
calendarIdstringДаID Google Календаря.
syncTokenstringНетТокен для инкрементальной синхронизации — возвращается в предыдущем ответе как nextSyncToken.
showDeletedbooleanНетВключать удалённые события в ответ. По умолчанию true.
singleEventsbooleanНетОбработка повторяющихся событий: true — каждое в отдельной записи, false — одной записью с полем recurrence. По умолчанию true.

Ответ

Объект с полями:

ПолеТипОписание
itemsarrayСписок событий календаря.
nextSyncTokenstringТокен для следующего запроса — вернёт только события, изменённые или удалённые с момента предыдущей синхронизации.
Сохраняйте nextSyncToken

Записывайте nextSyncToken после каждого запроса — например, в глобальную переменную. Без него каждая последующая синхронизация будет возвращать все события с нуля.


Пример обработки вебхука

После приёма вебхука от Google Календаря данные обрабатываются в действии JS-код.

Ответ на вебхук Google

В сценарии действий приёма вебхука от Google Календаря обязательно заполните системную переменную _response значением OK — иначе Google будет повторять вебхук, считая его необработанным.

// Полученные данные ожидаются в переменной result
var result = JSON.parse(varstore['result']);

const events = result.items;
for (const event of events) {
if (event.status === 'cancelled') {
// Обработка удалённых событий
// console.log(`Событие удалено: ID ${event.id}`);
} else {
// Обработка изменённых событий
// console.log(`Событие изменено: ${event.summary || 'Без названия'}, ID: ${event.id}`);
}
}

// Сохраняем новый syncToken для следующей синхронизации
varstore['newSyncToken'] = result.nextSyncToken;