Google Calendar
Как создать сервисный аккаунт
Для этого вам нужно создать свой аккаунт в сервисах Google.
Перейдите по этой ссылке и создайте новый проект:
Придумайте название для проекта:
Нажмите «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»). В ответ вы получите ссылку на файл с ключами:
Нельзя удалять блок, иначе файл удалится с сервера, и вам придется добавлять его снова.
Не забудьте сделать блок типа 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 аккаунта, который добавляется как владелец календаря
По умолчанию календарь будет создан в сервисном аккаунте. Чтобы можно было визуально редактировать календарь из своего аккаунта, передайте свой email в параметре owner_email.
Сохранённые значения из ответа 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 - название события
Также нужно задать один из двух вариантов параметров: дата ИЛИ дата и время.
Если событие происходит в течение всего дня, тогда нужно указать даты:
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)
Если часовые пояса календаря и события различаются, то событие со временем будет добавлено в часовом поясе календаря.
Пример:
Календарь находится в часовом поясе (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'}
Последнее обновление