Google Calendar

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

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

Перейдите по этой ссылкеarrow-up-right и создайте новый проект:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

triangle-exclamation

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

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

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

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

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

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

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

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

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

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 аккаунта, который добавляется как владелец календаря

circle-exclamation

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

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

{'kind': 'calendar#calendar', 'etag': '"WgASl9FY_5zrEmCZvrt4Qlh6tGQ"', 'id': '[email protected]', 'summary': 'Название календаря’, 'timeZone': 'UTC'}

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

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

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

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

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

Параметры:

creds_path - ссылка на ключ доступа сервисного аккаунта к API календаря (полученная по инструкции выше); команду - get_calendar; calendar_id - id выбранного календаря

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

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

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

{'kind': 'calendar#calendar', 'etag': '"6KN4OTLeoqGGu7Nr5uNIQgCGYsU"', 'id': '[email protected]', 'summary': 'Название календаря', 'timeZone': 'UTC'}

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

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

Параметры:

creds_path - ссылка на ключ доступа сервисного аккаунта к API календаря (полученная по инструкции выше); команду - calendars_list

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

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

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

{ 'kind': 'calendar#calendarList', 'etag': '"p32o8pm47rfqf20g"', 'nextSyncToken': 'CLCM2Ifb9PECEi5nc2hlZXRzQGdzaGVldHMtMjU0NzEzLmlhbS5nc2VydmljZWFjY291bnQuY29t', 'items': [ { 'kind': 'calendar#calendarListEntry', 'etag': '"1625235372775000"', 'id': '[email protected]', 'summary': 'AAAAAAAAaa', 'timeZone': 'Asia/Singapore', 'colorId': '17', 'backgroundColor': '#9a9cff', 'foregroundColor': '#000000', 'selected': True, 'accessRole': 'owner', 'defaultReminders': [ ] }, { 'kind': 'calendar#calendarListEntry', 'etag': '"1625235805096000"', 'id': '[email protected]', 'summary': 'AAAAAAAAaa', 'timeZone': 'Asia/Singapore', 'colorId': '21', 'backgroundColor': '#cca6ac', 'foregroundColor': '#000000', 'selected': True, 'accessRole': 'owner', 'defaultReminders': [ ] } ] }

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

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

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": "[email protected]", "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': '[email protected]'}, 'organizer': {'email': '[email protected]', 'displayName': 'Testov', 'self': True}, 'start': {'dateTime': '2021-07-22T07:43:53Z', 'timeZone': 'UTC'}, 'end': {'dateTime': '2021-07-22T08:43:53Z', 'timeZone': 'UTC'}, 'iCalUID': '[email protected]', 'sequence': 0, 'reminders': {'useDefault': True}, 'eventType': 'default' }

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

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)

circle-info

Если часовые пояса календаря и события различаются, то событие со временем будет добавлено в часовом поясе календаря.

Пример:

Календарь находится в часовом поясе (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": "[email protected]", "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': '[email protected]'}, 'organizer': {'email': '[email protected]', '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': '[email protected]', 'sequence': 0, 'attendees': [{'email': [email protected]', '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 календаря (полученная по инструкции выше); команду - 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": "[email protected]", "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":"[email protected]"},"organizer":{"email":"[email protected]","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":"[email protected]","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": "[email protected]", "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': '[email protected]'}, 'organizer': {'email': '[email protected]', 'displayName': 'Testov', 'self': True}, 'start': {'date': '2021-07-20'}, 'end': {'date': '2021-07-21'}, 'transparency': 'transparent', 'iCalUID': '[email protected]', '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': '[email protected]'}, 'organizer': {'email': '[email protected]', 'displayName': 'Тестовый календарь'}, 'start': {'dateTime': '2021-07-22T07:43:53Z', 'timeZone': 'UTC'}, 'end': {'dateTime': '2021-07-22T08:43:53Z', 'timeZone': 'UTC'}, 'iCalUID': '[email protected]', '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': '[email protected]'}, 'organizer': {'email': '[email protected]', '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': '[email protected]', 'sequence': 0, 'attendees': [{'email': '[email protected]', '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 клиента, которого нужно добавить

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

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

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

{ "creds_path": "https://files.salebot.ai/uploads/message/file/30037/calendar-project-320517-c241d9ab0565.json", "calendar_id": "[email protected]", "command": "add_client", "event_id": "#{event_id}", "client_email": "[email protected]", "name": "John", "comment": "Я буду первым!" }

Сохранённые значения из 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': '[email protected]'}, 'organizer': {'email': '[email protected]', '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': '[email protected]', 'sequence': 0, 'attendees': [{'email': '[email protected]', 'displayName': 'John', 'responseStatus': 'needsAction'}, {'email': '[email protected]', 'displayName': 'John', 'responseStatus': 'needsAction'}, {'email': '[email protected]', 'displayName': 'John2', 'responseStatus': 'needsAction'}], 'reminders': {'useDefault': False, 'overrides': [{'method': 'email', 'minutes': 10}, {'method': 'popup', 'minutes': 10}]}, 'eventType': 'default', ‘add_status’: 'ok'}

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

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": "[email protected]", "command": "remove_client", "event_id": "#{event_id}", "client_email": "[email protected]" }

Сохранённые значения из 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': '[email protected]'}, 'organizer': {'email': '[email protected]', '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': '[email protected]', 'sequence': 0, 'attendees': [{'email': '[email protected]', 'displayName': 'John', 'responseStatus': 'needsAction'}, {'email': '[email protected]', 'displayName': 'John', 'responseStatus': 'needsAction'}, {'email': '[email protected]', 'displayName': 'John2', 'responseStatus': 'needsAction'}], 'reminders': {'useDefault': False, 'overrides': [{'method': 'email', 'minutes': 10}, {'method': 'popup', 'minutes': 10}]}, 'eventType': 'default', 'remove_status': '1'}

Последнее обновление