Google Календарь
API-методы для синхронизации событий Google Календаря с конструктором.
Все запросы требуют API-ключа конструктора — см. Авторизация. Дополнительно нужны данные сервисного Google-аккаунта — см. Google Календарь.
Синхронизация событий
Возвращает список событий календаря и поддерживает инкрементальную синхронизацию через syncToken.
Используется для управления ботом при добавлении / изменении / удалении мероприятий в Google Календаре.
Метод удобен при получении вебхука от Google Календаря — он позволит получить только те события, которые изменились с момента последней синхронизации.
Аналогичный метод доступен в действии Google Календарь — если работаете внутри сценария, проще использовать его.
| Параметр | Значение |
|---|---|
| Метод | GET, POST |
| Endpoint | /gcalendar/sync |
Параметры запроса
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
client_email | string | Да | client_email из JSON-файла сервисного аккаунта Google. |
private_key | string | Да | private_key из JSON-файла сервисного аккаунта Google. |
calendarId | string | Да | ID Google Календаря. |
syncToken | string | Нет | Токен для инкрементальной синхронизации — возвращается в предыдущем ответе как nextSyncToken. |
showDeleted | boolean | Нет | Включать удалённые события в ответ. По умолчанию true. |
singleEvents | boolean | Нет | Обработка повторяющихся событий: true — каждое в отдельной записи, false — одной записью с полем recurrence. По умолчанию true. |
Ответ
Объект с полями:
| Поле | Тип | Описание |
|---|---|---|
items | array | Список событий календаря. |
nextSyncToken | string | Токен для следующего запроса — вернёт только события, изменённые или удалённые с момента предыдущей синхронизации. |
nextSyncTokenЗаписывайте nextSyncToken после каждого запроса — например, в глобальную переменную. Без него каждая последующая синхронизация будет возвращать все события с нуля.
Пример обработки вебхука
После приёма вебхука от Google Календаря данные обрабатываются в действии JS-код.
В сценарии действий приёма вебхука от 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;