# Google Calendar

* [Как создать сервисный аккаунт](#how-to-create-a-service-account)
* [Как скачать файл ключа](#how-to-download-the-key-file)
* [Как найти идентификатор календаря](#how-to-find-the-calendar-id)
* [Как создать новый календарь](#how-to-create-a-new-calendar)
* [Как получить информацию о календаре](#how-to-get-the-information-about-the-calendar)
* [Как получить список календарей сервисного аккаунта](#how-to-get-the-list-of-the-service-accounts-calendars)
* [Как работать с событиями](#how-to-work-with-events)

## Как создать сервисный аккаунт

Для этого вам нужно создать свой аккаунт в сервисах Google.

Перейдите по [**этой ссылке**](https://console.developers.google.com/cloud-resource-manager) и создайте новый проект:

![](https://lh5.googleusercontent.com/NG1WV05Itj6EeCf1J9zBHYqC8ZbDqXGaHpdLex4KIfUL42orPsIcFxxFfPMzqR2kJ-GU4F3d0aoLZYcjSmSzwTtmujFcCMHdp6YGTU6RcYoo4xvquTEmTvXIt238pJ_ZZHLaZ1kjr9OSrbj_sQ)

Придумайте название для проекта:

![](https://lh6.googleusercontent.com/-DGrD4022xKo01cvjPWcoADnzpk5xsneUOQy_04I6hIUXiDRrJvQTw8ZPZVuhz5dTbZ3FgBsOHaP_IuBWS3UcsidNYWePfPk0SThtOGFFJ192mzgerDv_SGzmzCJTlZjC6e-97rHn_PXJL9JsA)

Нажмите «Create» и подождите немного, пока проект будет создан.

Перезагрузите страницу, затем нажмите на только что созданный проект. Проверьте в поле слева ваш статус доступа — там должно быть указано «Owner (1)»:

![](https://lh6.googleusercontent.com/9muFuGGA7dUF3bHo-GZa-XB8NyzclfD5q8iGAigEwUH_2MvBoHgzqyuoeP4drSlh2Zx0ASELNDLq_GKhc4UcQVdVZ6PhIZDd4tGGcTB_3haklI729SkI-2HvIUByewnDBzbfUtkUPIJr0UzF_Q)

Теперь перейдите к настройкам сервисного аккаунта:

![](https://lh5.googleusercontent.com/Q45Aug6B6BY2jJkJJxCXLqh7YrFYmR9Zp1KeVQy0x14ZkznGbVrIXzA_awcNsw7Yc5Aa_SFQ2xK0gB3qeZMT1YPTR6VF6eQ6ssxweXhrvZSwhgOrUlsOh0YQPMxl3IXr6JdGfAHPeGUMDO5wdQ)

Там нужно открыть раздел «Service accounts» и нажать « + Create Service Account»:

![](https://lh5.googleusercontent.com/9KCh-Y4hP2xAubjCTQ9wK3V5lwYDNSGhCRVtc7TzQl5xsfBBKQrUR8kHq2YCFafMGh9asbDOQL_JgYlHUediL17wf8X42hTFJWt3LQnOYi10jEZOvBvv5pYsDUKKqHtr-fkVfHQTNz7johCoaQ)

Введите имя и email сервисного аккаунта:

![](https://lh6.googleusercontent.com/Oo5EpjcAEAhisFjWhGxEk7zBuo3TqHuyfNXWL_BatusaULn-U8qE-38mnEToYoOJZk6o24JccBBVVAha0CU6ZFvEOu8H-rculhxerQnB9yI5vBmnpSm1EyBg4LtVCCwUDMI52mdz503Q9qxODg)

Затем выберите роль Owner:

![](https://lh4.googleusercontent.com/V3ndP4Csp309f2aAvvzPNGad2NQQNZEOrMFSYw5bqFeqEVBt-SAJpr6SI48Yn8JQmYmu20wZ8HjTBNSWaVsunMGT40RE1WnzuJojbJ0Iwcbt8EYIXKt_131lfi_r-Iibu3oaPLTT5ltaHos6tQ)

Нажмите «Done», а затем «Manage keys» в выбранном проекте. После этого нажмите «Create new key»

![](https://lh4.googleusercontent.com/mvdV7hP-TSK-Kvr0aHm76l8I4ddetWVXYskOKYa6La3Xp7rwUuw3tP553hBRUENFepzriZsX67C9ve5hKU7iR6lBz2jg6PVTf2DYSrI7JZGSBMaz8dhBp6Zpjx47d8hLjiGkfVDFOi7kG8nQ6g)

Выберите тип ключа JSON и нажмите «Create»

![](https://lh5.googleusercontent.com/JxAPsYM4zEjFmFbuXDnqVZQmmgHiEqtl-jMO4vmQqu8WyHssEN3Upm43xzcZNkYXNRbln0MuqAZQq76xNi99Nqj73aqgwxfBUGaYKtIvU9or0ukkm-RpBz3qPqpt4SsAdrkuo5PiLIQ0YGuM_Q)

После создания ключа он автоматически сохраняется на ваш компьютер

![](https://lh4.googleusercontent.com/kyAdhhQobVvR9HcexWGzBlFckXTZ-L82kSbEkCakbMld65KmtrjsXl2SgwldU77XNNaLsrN3YMlLPOr2WpLCk-KomTdiOMCossSkRTYKdp1VflZad1rEzOiSGj-y-dFnNuTRc7kz4C7hnFPgug)

Затем вам нужно загрузить его на хостинг или в Salebot и передать ссылку на него в параметрах запроса, указав полученный URL в параметре creds\_path.

Теперь вам также нужно добавить наши API-интеграции. Для этого перейдите сюда:

![](https://lh3.googleusercontent.com/7DPiPASSAdgFU9O5I7laKm9aQkEtvrq2ADlFTMUeu95OSQw26TS8hhAmWNgvw4oXClgElmHKEVHw6y7YsGYPTL5MhB8WSk9EycEz2F2yCO_GM-AcIdPGujVCieUu7nE1cFEzf9WlmxPpF07o1w)

Затем нужно включить APIs and services и найти Google Calendar API в открывшемся окне:

![](https://lh6.googleusercontent.com/gLQvQQjADGonjX1uL3kIVIte6chCYzjmDmob5flHdzpUIkBLKF5oenob2Att_5b6Tu4fHZNsk7-adfizosbqEwvGjHiWKB_tZKr5Y2L3b831PqEHVkt12ggpxS_3Csw9fdW--atRK2sAXNkV7Q)

Нажмите на результат поиска, а затем на «Enable»:

![](https://lh5.googleusercontent.com/3LpS3U0TyFp3QORLenGiy0924zXuQGNhePDobY8Xz5asuf7sYXJAHNHsuMJXyugngMoVRu0r73YSxDkbWCbYLYgXFRucxvCrEruxFUmy9pKGr6Rl0CGp0QLSbUkNe9duyb6W2WSGqlym9BF95g)

Этот шаг завершает создание вашего сервисного аккаунта.

## Как скачать файл ключа

Перейдите в проект на Salebot и загрузите полученный файл ключа в блок, например так:

![](https://lh6.googleusercontent.com/Ru3wFP-gmQjC-np0U4tUJoYHfKUx4bQEq3sR5QvbIefpZxgT8P9DjjdBsdzJejElBCnDURleohA7ekpEyB7-N2Ha7emTYNHY7-_R6pWzpPCblVHEs6lMiYhYWyRLxzk_QYPrsk9BQQ09MPxm1Q)

Нажмите «Save» и перейдите в окно бесплатного тестирования:

![](https://lh3.googleusercontent.com/GWgWz8uGZmRyo7oUIt1Hh32y-aPypPIveRuPnbrVut6wbiPPwzzob8vc8slphEjjZMFH5uZwdKokVGMq72nipIs32u4kOal-4EHKkcePLX1JDdUWra1l4SEvhzx-c8_O4uhRXwtTg-q4JCrm2A)

Введите фразу, которую вы задали как условие (в данном случае это «123»). В ответ вы получите ссылку на файл с ключами:

![](https://lh5.googleusercontent.com/Fdpb36HCVWJteTrSoID1LFotJsYNDsQrE_uyyYsvMe0Iy6NNR_djCaKS8Kf9O_XLtb8KMGQL9tHl7aOhHrANj4D7108Qx6bRPj8wN5HKMH5RXLavLkrNyeEwqzgi5OyzrXAYbamr6VuDhpmJvg)

{% hint style="danger" %}
Нельзя удалять блок, иначе файл удалится с сервера, и вам придется добавлять его снова.
{% endhint %}

Не забудьте сделать блок типа Not state, чтобы он вам не мешал.

![](https://lh4.googleusercontent.com/rfNCUwnEr-FN-CCEnzeDCxrB1eqnTbUUUnLOmQkipoVzHmsCf56AM0-UtAWZWe0EhWFVMX-s9vFXTMrl78XT2bcJijvYptrTSE2kvpXWJUB3vF8BvlnDX_gjndY_UPDzGYYvnCfeUe2td8A87g)

Вы можете сохранить эту ссылку в переменную или передать её в параметре creds\_path как есть.

## Как найти идентификатор календаря

Идентификатор существующего календаря можно найти в его настройках в разделе «Integrate calendar»:

![](https://lh6.googleusercontent.com/ssPqnz_cQlA8v2pCzXmcaOC0tagTVBDV4Vyd-9UqvQF4VjbXyroqkwkwO6IaXOv-x0vOP3bAem5aB_vsdg9kemyO-n6quLhGf88a_5B62n1iJAIOOXwDTkmRAAv1rPGlwLM0Yx-1iH-lKnFuzg)

## Как создать новый календарь

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

### Ручное создание календаря:

![](https://lh4.googleusercontent.com/P49fLaIHyOh-0-FcQWdFBN5UygV9a-Tq6_92Q3Sn0ln5u1Sb7LmIDz88tKfDiRv1nTb7cofbFoi9Q_mdNk-Ol0Qt01MAd5HwfxIM9_pcifEIAwhWy_9eskUYVG8E7a4IfsVBNlCo0C2j_t8MPw)

Чтобы вы могли добавлять заметки и редактировать существующий календарь (или созданный вручную), нужно предоставить доступ сервисному аккаунту. Для этого просто добавьте email сервисного аккаунта в настройки нужного календаря:

![](https://lh4.googleusercontent.com/hQLBvQk36xq20jXLPWzLdNXWoSEXHj2qMshjZxQTGKneJj4H-HUy2Ekz3WJ5y5aVbGyfmE6-YQm-TIAqNwze_kFGhncbrWHLpnljDYaSDz8EXJ-Za3OutS9rIdJVgxpuHZZdXrdmQlUZ5iUUtg)

### Создание календаря с помощью функции

**URL функции**: <https://store.salebot.ai/function/gcalendar> \
**Тип запроса**: POST-json

**Параметры**:

**creds\_path** - ссылка на ключ доступа сервисного аккаунта к API календаря (полученная по инструкции выше); \
**команду** - create \
**name** - название календаря \
**description** - описание календаря

**Дополнительные параметры**:

**time\_zone** - часовой пояс календаря.  Идентификатор часового пояса IANA. По умолчанию — Europe/Moscow (GMT+3) \
**location** - географическое местоположение календаря в виде текста произвольной формы

Вы также можете предоставить доступ другому аккаунту, например, вашему основному:

**owner\_email** - email аккаунта, который добавляется как владелец календаря

{% hint style="warning" %}
По умолчанию календарь будет создан в сервисном аккаунте. Чтобы можно было визуально редактировать календарь из своего аккаунта, передайте свой email в параметре owner\_email.
{% endhint %}

**Сохранённые значения** из ответа JSON

После успешного выполнения функция возвращает следующие параметры, которые можно сохранить:

`{'kind': 'calendar#calendar', 'etag': '"WgASl9FY_5zrEmCZvrt4Qlh6tGQ"', 'id': '7e2q3mka5dmfmcohdltfupclj4@group.calendar.google.com', 'summary': 'Название календаря’, 'timeZone': 'UTC'}`

Сохраним id созданного календаря: `id -> calendar_id`&#x20;

![](https://lh6.googleusercontent.com/64BZuVj1APwealP0nIEY5gb_9I4ZV9gLApOEIbRhYYzIGSg2wKza1OggKASRFBOnSDkghoINjH2SKnXAUxFrA-i02kmtz5BrSqV2n0OS_7_dbNvQuLBhh3PsrQ8Qc7_KhqOshVf3JhaV6O_m-w)

Для тестирования можно вывести переменную #{custom\_answer}.

Если был передан email (owner\_email), то после успешного запроса нужно перейти в свой почтовый ящик и подтвердить добавление календаря в ваш аккаунт:

![](https://lh6.googleusercontent.com/Vt4Z3gvrMcWZDcR1FIjQdcJCJu8KnP9p3AXtWfW0D6LAjSrsdjd05pwjgeEivQl6f3Su7KEgOVLp4-usk1GiLwijbNA8rYW1kimicScJLI6cxj1lP3ezShCEVxeI-3_JoO-fo6NSrbUQIehWgw)

![](https://lh6.googleusercontent.com/tPzJigwrYpHh3MD3c-zX2rP32sHT_VM1Y6l-uebqvb2XUntTkiXNlAWex79NzZZuw3FxjAJZRtrXah9N-cqLjonAX0LhXhuJ7cTIb-UdfmM0auYaXnOQTQYP9QTNouQHFY5fsHtviWvpSgZKIw)

## Как получить информацию о календаре

**URL функции**: <https://store.salebot.ai/function/gcalendar> \
**Тип запроса**: POST-json

**Параметры**:

**creds\_path** - ссылка на ключ доступа сервисного аккаунта к API календаря (полученная по инструкции выше); \
**команду** - get\_calendar; \
**calendar\_id** - id выбранного календаря

**Сохранённые значения**

После успешного выполнения функция возвращает следующие параметры, которые можно сохранить.

Пригласительную **пример** ответа функции:

`{'kind': 'calendar#calendar', 'etag': '"6KN4OTLeoqGGu7Nr5uNIQgCGYsU"', 'id': 'rcdd8mimc6gjtasan9ansn8354@group.calendar.google.com', 'summary': 'Название календаря', 'timeZone': 'UTC'}`

## Как получить список календарей сервисного аккаунта

**URL функции**: <https://store.salebot.ai/function/gcalendar> \
**Тип запроса**: POST-json

**Параметры**:

**creds\_path** - ссылка на ключ доступа сервисного аккаунта к API календаря (полученная по инструкции выше); \
**команду** - calendars\_list

**Сохранённые значения**

После успешного выполнения функция возвращает следующие параметры, которые можно сохранить.

Пригласительную **пример** ответа функции:

`{` \
&#x20;  `'kind': 'calendar#calendarList',` \
&#x20;  `'etag': '"p32o8pm47rfqf20g"',`\
&#x20;  `'nextSyncToken': 'CLCM2Ifb9PECEi5nc2hlZXRzQGdzaGVldHMtMjU0NzEzLmlhbS5nc2VydmljZWFjY291bnQuY29t',` \
&#x20;  `'items': [` \
&#x20;    `{` \
&#x20;      `'kind': 'calendar#calendarListEntry',` \
&#x20;      `'etag': '"1625235372775000"',` \
&#x20;      `'id': '74u4aogu34hisgvi9v0pjriqho@group.calendar.google.com',` \
&#x20;      `'summary': 'AAAAAAAAaa',` \
&#x20;      `'timeZone': 'Asia/Singapore',` \
&#x20;      `'colorId': '17',` \
&#x20;      `'backgroundColor': '#9a9cff',` \
&#x20;      `'foregroundColor': '#000000',` \
&#x20;      `'selected': True,` \
&#x20;      `'accessRole': 'owner',` \
&#x20;      `'defaultReminders': [` \
&#x20;     `]` \
&#x20;  `},` \
&#x20;  `{` \
&#x20;    `'kind': 'calendar#calendarListEntry',` \
&#x20;    `'etag': '"1625235805096000"',` \
&#x20;    `'id': '5u9q24kdh571mnm667t2d3q16c@group.calendar.google.com',` \
&#x20;    `'summary': 'AAAAAAAAaa',` \
&#x20;    `'timeZone': 'Asia/Singapore',` \
&#x20;    `'colorId': '21',` \
&#x20;    `'backgroundColor': '#cca6ac',` \
&#x20;    `'foregroundColor': '#000000',` \
&#x20;    `'selected': True,` \
&#x20;    `'accessRole': 'owner',` \
&#x20;    `'defaultReminders': [`\
&#x20;    `]` \
&#x20;   `}` \
&#x20; `]` \
`}`

## Как работать с событиями

### Быстрое добавление события

**URL функции**: <https://store.salebot.ai/function/gcalendar> \
**Тип запроса**: POST-json

**Параметры**:

**creds\_path** - ссылка на ключ доступа сервисного аккаунта к API календаря (полученная по инструкции выше); \
**команду** - quick\_add\_event; \
**calendar\_id** - id выбранного календаря;\
**event\_name** - название события

Пригласительную **пример** параметров:

`{"creds_path": "https://files.salebot.ai/uploads/message/file/30037/calendar-project-320517-c241d9ab0565.json", "calendar_id": "i9svertstvoo2fq1o0i8cn39a8@group.calendar.google.com", "command": "quick_add_event","event_name": "Incredible Event"}`

**Сохранённые значения**

После успешного выполнения функция возвращает следующие параметры, которые можно сохранить. Чтобы потом можно было редактировать созданное событие, рекомендуется сохранить его id: id -> event\_id.

Пригласительную **пример** ответа функции:

`{`\
`'kind': 'calendar#event',` \
`'etag': '"3253879667088000"',` \
`'id': 'ljp7a3ocp8oorbov9u2cq221s0',` \
`'status': 'confirmed',` \
`'htmlLink': 'https://www.google.com/calendar/event?eid=bGpwN2Ezb2NwOG9vcmJvdjl1MmNxMjIxczAgaTlzdmVydHN0dm9vMmZxMW8waThjbjM5YThAZw',` \
`'created': '2021-07-22T07:43:53.000Z',` \
`'updated': '2021-07-22T07:43:53.544Z',` \
`'creator': {'email': 'gsheets@gsheets-254713.iam.gserviceaccount.com'},` \
`'organizer': {'email': 'i9svertstvoo2fq1o0i8cn39a8@group.calendar.google.com',` \
`'displayName': 'Testov',` \
`'self': True},` \
`'start': {'dateTime': '2021-07-22T07:43:53Z', 'timeZone': 'UTC'},` \
`'end': {'dateTime': '2021-07-22T08:43:53Z', 'timeZone': 'UTC'},` \
`'iCalUID': 'ljp7a3ocp8oorbov9u2cq221s0@google.com',` \
`'sequence': 0,` \
`'reminders': {'useDefault': True},` \
`'eventType': 'default'`\
`}`

![](/files/cdc60d3bea6b886804832ef65112cb5c45f40e6a)

### Как добавить событие

**URL функции**: <https://store.salebot.ai/function/gcalendar> \
**Тип запроса**: POST-json

#### Параметры:

**creds\_path** - ссылка на ключ доступа сервисного аккаунта к API календаря (полученная по инструкции выше); \
**команду** - add\_event \
**calendar\_id** - id выбранного календаря \
**event\_name** - название события

Также нужно задать один из двух вариантов параметров: дата ИЛИ дата и время.

Если событие происходит в течение всего дня, тогда нужно указать даты:

1. **start\_date** - дата начала события в формате DD.MM.YYYY (например, 23.07.2010)
2. **end\_date** - дата окончания события в формате DD.MM.YYYY (например, 24.07.2010)

Если событие происходит в заданное время, тогда нужно указать дату и время:

1. start\_datetime - дата и время начала события в формате DD.MM.YYYY HH:MM (например, 23.07.2010 12:00)
2. end\_datetime - дата и время окончания события в формате DD.MM.YYYY HH:MM (например, 23.07.2010 13:00)
3. time\_zone - часовой пояс события. Идентификатор часового пояса IANA. По умолчанию — Europe/Moscow (GMT+3)

{% hint style="info" %}
Если часовые пояса календаря и события различаются, то событие со временем будет добавлено в часовом поясе календаря.
{% endhint %}

Пример:

Календарь находится в часовом поясе (tz) Europe/Kyiv +3, а событие добавляется с часовым поясом Europe/Berlin +2. Время события в 12:00 (tz +2) будет добавлено в календарь как 13:00, потому что по киевскому времени 13:00 — это 12:00 в часовом поясе +2.

**Дополнительные параметры:**

**event\_description** - описание события \
**location** - географическое местоположение события в виде текста произвольной формы \
**email\_minutes** - время в минутах до события, за которое отправлять уведомление на email участников \
**popup\_minutes** - время в минутах до события, за которое отправлять уведомление участникам в виде всплывающего окна

Пример параметров:

`{"creds_path": "https://files.salebot.ai/uploads/message/file/30037/calendar-project-320517-c241d9ab0565.json", "calendar_id": "i9svertstvoo2fq1o0i8cn39a8@group.calendar.google.com", "command": "add_event", "event_name": "The greatest event of all time", "start_datetime": "27.07.2021 12:00", "end_datetime": "27.07.2021 14:00"}`

#### Сохранённые значения из JSON-ответа:

После успешного выполнения функция возвращает следующие параметры, которые можно сохранить:

Для будущего редактирования созданного события рекомендуется сохранить его id:

**id -> event\_id**

#### Пример ответа функции:

`{'kind': 'calendar#event', 'etag': '"3254057128970000"', 'id': 'ittr5291ppi7snapn8jbct5krs', 'status': 'confirmed', 'htmlLink': 'https://www.google.com/calendar/event?eid=aXR0cjUyOTFwcGk3c25hcG44amJjdDVrcnMgaTlzdmVydHN0dm9vMmZxMW8waThjbjM5YThAZw', 'created': '2021-07-23T08:22:35.000Z', 'updated': '2021-07-23T08:22:53.109Z', 'summary': 'New Event44', 'description': 'Descri xbb xhjxkv', 'location': 'city London', 'creator': {'email': 'gsheets@gsheets-254713.iam.gserviceaccount.com'}, 'organizer': {'email': 'i9svertstvoo2fq1o0i8cn39a8@group.calendar.google.com', 'displayName': ‘Test’, 'self': True}, 'start': {'dateTime': '2021-07-23T13:30:00Z', 'timeZone': 'Europe/Kyiv}, 'end': {'dateTime': '2021-07-23T14:00:00Z', 'timeZone': 'Europe/Kyiv}, 'iCalUID': 'ittr5291ppi7snapn8jbct5krs@google.com', 'sequence': 0, 'attendees': [{'email': john@gmail.com', 'displayName': John, 'responseStatus': 'needsAction'}], 'reminders': {'useDefault': False, 'overrides': [{'method': 'email', 'minutes': 10}, {'method': 'popup', 'minutes': 10}]}, 'eventType': 'default'}`

![](https://lh4.googleusercontent.com/KVPS5xulK5hFYLTI9tsbvwd51rbH-FkxXMWArUuUNvTfTD-hTq486q4KSQvO45JqCet3U9wmrB65dwrSsOJQTeTxmt47tV5Jh1Qx6Wsri5cPW47QOohuwHY1rDdF7_G-hPNe8-xuCtEDY-rbIg)

### Редактирование события

**URL функции**: <https://store.salebot.ai/function/gcalendar\\>
**Тип запроса**: POST-json

#### Обязательные параметры:

**creds\_path** - ссылка на ключ доступа сервисного аккаунта к API календаря (полученная по инструкции выше); \
**команду** - update\_event; \
**calendar\_id** - id календаря; \
**event\_id** - id события, которое нужно отредактировать

**Дополнительные параметры** для обновления:

Можно передать как один, так и несколько параметров.

**event\_name** - название события \
**event\_description** - описание события \
**email\_minutes** - время в минутах до события, за которое отправлять уведомление на email участников \
**popup\_minutes** - время в минутах до события, за которое отправлять уведомление участникам в виде всплывающего окна

Если событие происходит в течение всего дня, тогда нужно указать даты:

**start\_date** - дата начала события в формате DD.MM.YYYY (например, 23.07.2010) \
**end\_date** - дата окончания события в формате DD.MM.YYYY (например, 24.07.2010)

Если событие происходит в заданное время, тогда нужно указать дату и время:

**start\_datetime** - дата и время начала события в формате DD.MM.YYYY HH:MM (например, 23.07.2010 12:00) \
**end\_datetime** - дата и время окончания события в формате DD.MM.YYYY HH:MM (например, 23.07.2010 13:00) \
**time\_zone** - часовой пояс события. Идентификатор часового пояса IANA. По умолчанию — Europe/Moscow (GMT+3)

Пример параметров:

`{"creds_path": "https://files.salebot.ai/uploads/message/file/30037/calendar-project-320517-c241d9ab0565.json", "calendar_id": "i9svertstvoo2fq1o0i8cn39a8@group.calendar.google.com", "event_id": "j1lcpm4q2p9c0cv705alv3brug", "command": "update_event", "event_name": "Edited event", "start_datetime": "27.07.2021 12:00", "end_datetime": "27.07.2021 14:00","popup_minutes": "11","email_minutes": "22"}`

#### Сохранённые значения из JSON-ответа:

После успешного выполнения функция возвращает следующие параметры, которые можно сохранить.

#### Пример ответа функции:

`{"kind":"calendar#event","etag":""3276713558524000"","id":"j1lcpm4q2p9c0cv705alv3brug","status":"confirmed","htmlLink":"https://www.google.com/calendar/event?eid=ajFsY3BtNHEycDljMGN2NzA1YWx2M2JydWcgaTlzdmVydHN0dm9vMmZxMW8waThjbjM5YThAZw","created":"2021-12-01T10:40:11.000Z","updated":"2021-12-01T10:43:16.738Z","summary":"Amazing","creator":{"email":"gsheets@gsheets-254713.iam.gserviceaccount.com"},"organizer":{"email":"i9svertstvoo2fq1o0i8cn39a8@group.calendar.google.com","displayName":"Test","self":true},"start":{"dateTime":"2021-12-28T09:00:00Z","timeZone":"Europe/Moscow"},"end":{"dateTime":"2021-12-29T11:00:00Z","timeZone":"Europe/Moscow"},"iCalUID":"j1lcpm4q2p9c0cv705alv3brug@google.com","sequence":0,"reminders":{"useDefault":false,"overrides":[{"method":"email","minutes":22},{"method":"popup","minutes":12}]},"eventType":"default","update_status":"ok"}`

### Получение списка событий

**URL функции**: <https://store.salebot.ai/function/gcalendar> \
**Тип запроса**: POST-json

#### Параметры:

**creds\_path** - ссылка на ключ доступа сервисного аккаунта к API календаря (полученная по инструкции выше); \
**команду** - get\_event\_list;\
**calendar\_id** - id календаря

Если не передавать дополнительные параметры, то результатом будет список событий на сегодня

**Дополнительные параметры:**

**start\_date** - дата, начиная с которой вы хотите найти события, в формате DD.MM.YYYY (23.07.2021) \
**end\_date** - дата, до которой вы хотите найти события, в формате DD.MM.YYYY (24.07.2021)

Пример параметров:

Будет найдено событие за 23 июля

`{"creds_path": "https://files.salebot.ai/uploads/message/file/30037/calendar-project-320517-c241d9ab0565.json", "calendar_id": "i9svertstvoo2fq1o0i8cn39a8@group.calendar.google.com", "command": "get_event_list", "start_date": "22.07.2021", "end_date": "23.07.2021"}`

#### Сохранённые значения из JSON-ответа:

После успешного выполнения функция возвращает следующие параметры, которые можно сохранить.

Список найденных событий можно сохранить в переменную:

**items -> event\_list**

#### Пример ответа функции:

`{'kind': 'calendar#events', 'etag': '"p33odnesrinsv20g"', 'summary': 'Test', 'description': 'Test description', 'updated': '2021-07-23T12:13:05.686Z', 'timeZone': 'UTC', 'accessRole': 'owner', 'defaultReminders': [], 'items': [{'kind': 'calendar#event', 'etag': '"3254084771372000"', 'id': '6d8rocb9e2r21ue37jgsa0v06i', 'status': 'confirmed', 'htmlLink': 'https://www.google.com/calendar/event?eid=NmQ4cm9jYjllMnIyMXVlMzdqZ3NhMHYwNmkgaTlzdmVydHN0dm9vMmZxMW8waThjbjM5YThAZw', 'created': '2021-07-23T12:11:13.000Z', 'updated': '2021-07-23T12:13:05.686Z', 'summary': 'DDDDDDDDD', 'creator': {'email': 'adnimdd@gmail.com'}, 'organizer': {'email': 'i9svertstvoo2fq1o0i8cn39a8@group.calendar.google.com', 'displayName': 'Testov', 'self': True}, 'start': {'date': '2021-07-20'}, 'end': {'date': '2021-07-21'}, 'transparency': 'transparent', 'iCalUID': '6d8rocb9e2r21ue37jgsa0v06i@google.com', 'sequence': 0, 'reminders': {'useDefault': False}, 'eventType': 'default'}]}`

### Как переместить события в другой календарь

**URL функции**: <https://store.salebot.ai/function/gcalendar> \
**Тип запроса**: POST-json

#### Параметры:

**creds\_path** - ссылка на ключ доступа сервисного аккаунта к API календаря (полученная по инструкции выше); \
**команду** - move\_event; \
**calendar\_id** - id календаря, из которого перемещается событие;\
**event\_id** - id события; \
**destination\_calendar\_id** - id календаря, в который перемещается событие;

#### Сохранённые значения из JSON-ответа:

После успешного выполнения функция возвращает следующие параметры, которые можно сохранить.

#### Пример ответа функции:

`{'kind': 'calendar#event', 'etag': '"3253880350568000"', 'id': 'ljp7a3ocp8oorbov9u2cq221s0', 'status': 'cancelled', 'htmlLink': 'https://www.google.com/calendar/event?eid=bGpwN2Ezb2NwOG9vcmJvdjl1MmNxMjIxczAgaTlzdmVydHN0dm9vMmZxMW8waThjbjM5YThAZw', 'created': '2021-07-22T07:43:53.000Z', 'updated': '2021-07-22T07:49:35.284Z', 'creator': {'email': 'gsheets@gsheets-254713.iam.gserviceaccount.com'}, 'organizer': {'email': '88q8fvkrv5ue7orsh109t6o60s@group.calendar.google.com', 'displayName': 'Тестовый календарь'}, 'start': {'dateTime': '2021-07-22T07:43:53Z', 'timeZone': 'UTC'}, 'end': {'dateTime': '2021-07-22T08:43:53Z', 'timeZone': 'UTC'}, 'iCalUID': 'ljp7a3ocp8oorbov9u2cq221s0@google.com', 'sequence': 0, 'reminders': {'useDefault': True}, 'eventType': 'default'}`

### Как получить информацию о событии

**URL функции**: <https://store.salebot.ai/function/gcalendar> \
**Тип запроса**: POST-json

#### Параметры:

**creds\_path** - ссылка на ключ доступа сервисного аккаунта к API календаря (полученная по инструкции выше); \
**команду** - get\_event; \
**calendar\_id** - id календаря; \
**event\_id** - id события

#### Сохранённые значения из JSON-ответа:

После успешного выполнения функция возвращает следующие параметры, которые можно сохранить.

#### Пример ответа функции:

`{'kind': 'calendar#event', 'etag': '"3254067331414000"', 'id': 'ittr5291ppi7snapn8jbct5krs', 'status': 'confirmed', 'htmlLink': 'https://www.google.com/calendar/event?eid=aXR0cjUyOTFwcGk3c25hcG44amJjdDVrcnMgaTlzdmVydHN0dm9vMmZxMW8waThjbjM5YThAZw', 'created': '2021-07-23T08:22:35.000Z', 'updated': '2021-07-23T11:12:55.553Z', 'summary': 'New Event44', 'description': 'Descri xbb xhjxkv', 'location': 'city London', 'creator': {'email': 'gsheets@gsheets-254713.iam.gserviceaccount.com'}, 'organizer': {'email': 'i9svertstvoo2fq1o0i8cn39a8@group.calendar.google.com', 'displayName': 'Test', 'self': True}, 'start': {'dateTime': '2021-07-23T13:30:00Z', 'timeZone': 'Europe/Moscow'}, 'end': {'dateTime': '2021-07-23T14:00:00Z', 'timeZone': 'Europe/Moscow'}, 'iCalUID': 'ittr5291ppi7snapn8jbct5krs@google.com', 'sequence': 0, 'attendees': [{'email': 'adnimdd@gmail.com', 'displayName': 'John', 'responseStatus': 'needsAction'}], 'reminders': {'useDefault': False, 'overrides': [{'method': 'email', 'minutes': 10}, {'method': 'popup', 'minutes': 10}]}, 'eventType': 'default'}`

### Как удалить событие

**URL функции**: <https://store.salebot.ai/function/gcalendar> \
**Тип запроса**: POST-json

#### Параметры:

**creds\_path** - ссылка на ключ доступа сервисного аккаунта к API календаря (полученная по инструкции выше); \
**команду** - remove\_event; \
**calendar\_id** - id календаря; \
**event\_id** - id события, которое нужно удалить

#### Сохранённые значения из JSON-ответа:

После успешного выполнения функция возвращает следующие параметры, которые можно сохранить.

#### Пример ответа функции:

`{'status': 'ok'}`

### Как добавить участника события

**URL функции**: <https://store.salebot.ai/function/gcalendar> \
**Тип запроса**: POST-json

#### Параметры:

**creds\_path** - ссылка на ключ доступа сервисного аккаунта к API календаря (полученная по инструкции выше); \
**команду** - add\_client; \
**calendar\_id** - id календаря; \
**event\_id** - id события; \
**client\_email** - email клиента, которого нужно добавить

Дополнительные параметры:&#x20;

**name** - название события; \
**комментарий** - комментарий участника

**Пример параметров:**

`{` \
`"creds_path": "https://files.salebot.ai/uploads/message/file/30037/calendar-project-320517-c241d9ab0565.json",` \
`"calendar_id": "i9svertstvoo2fq1o0i8cn39a8@group.calendar.google.com",` \
`"command": "add_client",` \
`"event_id": "#{event_id}",` \
`"client_email": "asdc@mail.com",` \
`"name": "John",` \
`"comment": "Я буду первым!"` \
`}`

![](https://lh5.googleusercontent.com/8JxiPQ_0jmcLYLgDm342-ZfFX346G_QtephaPBQ6upoh1zWVphAZvve3OtpDM8UgJyreXmxFpkEV0tO6Jq15ECT2nMx-rg1lGpzybwCB4Hnd391H99IQ-hQ6fuEOvU-CRCHw2L74UVXJLHTCfQ)

#### Сохранённые значения из JSON-ответа:

Функция всегда возвращает статус **add\_status**. Он может принимать одно из трёх значений:

**ok** - клиент был добавлен \
**exist** - клиент уже существует \
**error** - при добавлении возникла ошибка, тогда дополнительно к add\_status будет параметр error\_message с текстом ошибки

#### Пример ответа функции в случае успеха:

`{'kind': 'calendar#event', 'etag': '"3254059247409000"', 'id': 'ittr5291ppi7snapn8jbct5krs', 'status': 'confirmed', 'htmlLink': 'https://www.google.com/calendar/event?eid=aXR0cjUyOTFwcGk3c25hcG44amJjdDVrcnMgaTlzdmVydHN0dm9vMmZxMW8waThjbjM5YThAZw', 'created': '2021-07-23T08:22:35.000Z', 'updated': '2021-07-23T08:58:11.548Z', 'summary': 'New Event44', 'description': 'Descri xbb xhjxkv', 'location': 'city London', 'creator': {'email': 'gsheets@gsheets-254713.iam.gserviceaccount.com'}, 'organizer': {'email': 'i9svertstvoo2fq1o0i8cn39a8@group.calendar.google.com', 'displayName': 'Test', 'self': True}, 'start': {'dateTime': '2021-07-23T13:30:00Z', 'timeZone': 'Europe/Moscow'}, 'end': {'dateTime': '2021-07-23T14:00:00Z', 'timeZone': 'Europe/Moscow'}, 'iCalUID': 'ittr5291ppi7snapn8jbct5krs@google.com', 'sequence': 0, 'attendees': [{'email': 'adnimdd@gmail.com', 'displayName': 'John', 'responseStatus': 'needsAction'}, {'email': 'adnimd@gmail.com', 'displayName': 'John', 'responseStatus': 'needsAction'}, {'email': 'adnidgmd@gmail.com', 'displayName': 'John2', 'responseStatus': 'needsAction'}], 'reminders': {'useDefault': False, 'overrides': [{'method': 'email', 'minutes': 10}, {'method': 'popup', 'minutes': 10}]}, 'eventType': 'default', ‘add_status’: 'ok'}`&#x20;

### Как удалить участника

**URL функции**: <https://store.salebot.ai/function/gcalendar> \
**Тип запроса**: POST-json

#### Параметры:

**creds\_path** - ссылка на ключ доступа сервисного аккаунта к API календаря (полученная по инструкции выше); \
**команду** - remove\_client; \
**calendar\_id** - id календаря; \
**event\_id** - id события; \
**client\_email** - email клиента

#### Пример параметров:

`{` \
`"creds_path": "https://files.salebot.ai/uploads/message/file/30037/calendar-project-320517-c241d9ab0565.json",` \
`"calendar_id": "i9svertstvoo2fq1o0i8cn39a8@group.calendar.google.com",` \
`"command": "remove_client",` \
`"event_id": "#{event_id}",` \
`"client_email": "asdc@mail.com"` \
`}`

#### Сохранённые значения из JSON-ответа:

Функция всегда возвращает статус **remove\_status**. Он может принимать одно из трёх значений:

**1** - клиент был успешно удалён \
**0** - клиент не найден \
**error** - при удалении возникла ошибка, тогда дополнительно к remove\_status будет параметр error\_message с текстом ошибки

#### Ответ функции в случае успеха:

`{'kind': 'calendar#event', 'etag': '"3254059247409000"', 'id': 'ittr5291ppi7snapn8jbct5krs', 'status': 'confirmed', 'htmlLink': 'https://www.google.com/calendar/event?eid=aXR0cjUyOTFwcGk3c25hcG44amJjdDVrcnMgaTlzdmVydHN0dm9vMmZxMW8waThjbjM5YThAZw', 'created': '2021-07-23T08:22:35.000Z', 'updated': '2021-07-23T08:58:11.548Z', 'summary': 'New Event44', 'description': 'Descri xbb xhjxkv', 'location': 'city London', 'creator': {'email': 'gsheets@gsheets-254713.iam.gserviceaccount.com'}, 'organizer': {'email': 'i9svertstvoo2fq1o0i8cn39a8@group.calendar.google.com', 'displayName': 'Test', 'self': True}, 'start': {'dateTime': '2021-07-23T13:30:00Z', 'timeZone': 'Europe/Moscow'}, 'end': {'dateTime': '2021-07-23T14:00:00Z', 'timeZone': 'Europe/Moscow'}, 'iCalUID': 'ittr5291ppi7snapn8jbct5krs@google.com', 'sequence': 0, 'attendees': [{'email': 'adnimdd@gmail.com', 'displayName': 'John', 'responseStatus': 'needsAction'}, {'email': 'adnimd@gmail.com', 'displayName': 'John', 'responseStatus': 'needsAction'}, {'email': 'adnidgmd@gmail.com', 'displayName': 'John2', 'responseStatus': 'needsAction'}], 'reminders': {'useDefault': False, 'overrides': [{'method': 'email', 'minutes': 10}, {'method': 'popup', 'minutes': 10}]}, 'eventType': 'default', 'remove_status': '1'}`


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/ru/integrations/google/calendar.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
