# Google Calendar

* [Cómo crear una cuenta de servicio](#how-to-create-a-service-account)
* [Cómo descargar el archivo de clave](#how-to-download-the-key-file)
* [Cómo encontrar el ID del calendario](#how-to-find-the-calendar-id)
* [Cómo crear un nuevo calendario](#how-to-create-a-new-calendar)
* [Cómo obtener la información sobre el calendario](#how-to-get-the-information-about-the-calendar)
* [Cómo obtener la lista de calendarios de la cuenta de servicio](#how-to-get-the-list-of-the-service-accounts-calendars)
* [Cómo trabajar con eventos](#how-to-work-with-events)

## Cómo crear una cuenta de servicio

Para ello, necesitas crear tu propia cuenta en los servicios de Google.

Ve a [**este enlace**](https://console.developers.google.com/cloud-resource-manager) y crea un nuevo proyecto:

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

Piensa en el nombre del proyecto:

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

Pulsa “Crear” y espera un poco mientras se crea el proyecto.

Recarga la página y luego pulsa sobre el proyecto recién creado. Comprueba en el campo de la izquierda tu estado de acceso: debe decir “Owner (1)”:

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

Ahora ve a la configuración de la cuenta de servicio:

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

Allí necesitas abrir la sección “Service accounts” y pulsar “ + Create Service Account”:

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

Introduce el nombre y el correo electrónico de la cuenta de servicio:

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

Luego elige el rol de Owner:

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

Pulsa “Done” y luego “Manage keys” en el proyecto elegido. Después pulsa “Create new key”

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

Elige el tipo de clave JSON y pulsa “Create”

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

Después de crear la clave, se guarda automáticamente en tu ordenador

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

Luego necesitas subirla al hosting o a Salebot y compartir el enlace a ella en los parámetros de la solicitud, pasando la URL obtenida en el parámetro creds\_path.

Ahora también necesitas añadir nuestras API-integraciones. Para hacerlo, ve aquí:

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

Luego necesitas habilitar APIs and services y buscar Google Calendar API en la ventana que se abre:

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

Pulsa sobre el resultado de la búsqueda y luego sobre “Enable”:

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

Este paso finaliza la creación de tu cuenta de servicio.

## Cómo descargar el archivo de clave

Entra en el proyecto en Salebot y carga el archivo de clave obtenido en un bloque, por ejemplo, así:

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

Pulsa “Save” y ve a la ventana de pruebas gratuitas:

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

Introduce la frase que configuraste como condición (en este caso es “123”). Recibirás como respuesta un enlace al archivo con las claves:

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

{% hint style="danger" %}
No puedes eliminar el bloque; de lo contrario, el archivo se eliminará del servidor y tendrás que añadirlo de nuevo.
{% endhint %}

No olvides poner el bloque con el tipo Not state, para que no te moleste.

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

Puedes guardar este enlace en una variable o transferirlo en el parámetro creds\_path tal cual.

## Cómo encontrar el ID del calendario

Puedes encontrar el ID del calendario existente en su configuración, en la sección “Integrate calendar”:

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

## Cómo crear un nuevo calendario

Puedes crear un nuevo calendario de dos formas: manualmente y usando una función.

### Creación manual del calendario:

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

Para que puedas añadir notas y editar un calendario existente (o uno creado manualmente), debes conceder acceso a la cuenta de servicio. Para ello, simplemente añade el correo electrónico de la cuenta de servicio en la configuración del calendario necesario:

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

### Creación de calendario mediante una función

**URL de la función**: <https://store.salebot.ai/function/gcalendar> \
**Tipo de solicitud**: POST-json

**Parámetros**:

**creds\_path** - el enlace a la clave de acceso de la cuenta de servicio para la API del calendario (obtenido usando la instrucción anterior); \
**comando** - create \
**name** - nombre del calendario \
**description** - descripción del calendario

**Parámetros adicionales**:

**time\_zone** - la zona horaria del calendario.  ID de zona horaria IANA. Por defecto es Europe/Moscow (GMT+3) \
**location** - una ubicación geográfica del calendario como texto de forma arbitraria

También puedes conceder acceso a otra cuenta, por ejemplo, la tuya principal:

**owner\_email** - correo electrónico de la cuenta que se añade como propietaria del calendario

{% hint style="warning" %}
Por defecto, el calendario se creará en la cuenta de servicio. Para poder editar visualmente el calendario desde tu propia cuenta, pasa tu correo electrónico en el parámetro owner\_email.
{% endhint %}

**Valores almacenados** de la respuesta JSON

Después de una ejecución exitosa, la función devuelve estos parámetros que puedes guardar y almacenar:

`{'kind': 'calendar#calendar', 'etag': '"WgASl9FY_5zrEmCZvrt4Qlh6tGQ"', 'id': '7e2q3mka5dmfmcohdltfupclj4@group.calendar.google.com', 'summary': 'Nombre del calendario’', 'timeZone': 'UTC'}`

Vamos a guardar el ID del calendario creado: `id -> calendar_id`&#x20;

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

Para probar, puedes mostrar la variable #{custom\_answer}.

Si se transfirió el correo electrónico (owner\_email), entonces después de la solicitud exitosa es necesario ir a la bandeja de entrada de tu correo y confirmar que el calendario se ha añadido a tu cuenta:

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

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

## Cómo obtener la información sobre el calendario

**URL de la función**: <https://store.salebot.ai/function/gcalendar> \
**Tipo de solicitud**: POST-json

**Parámetros**:

**creds\_path** - el enlace a la clave de acceso de la cuenta de servicio para la API del calendario (obtenido usando la instrucción anterior); \
**comando** - get\_calendar; \
**calendar\_id** - el id del calendario elegido

**Valores almacenados**

Después de una ejecución exitosa, la función devuelve estos parámetros que puedes guardar y almacenar.

Un **ejemplo** de la respuesta de la función:

`{'kind': 'calendar#calendar', 'etag': '"6KN4OTLeoqGGu7Nr5uNIQgCGYsU"', 'id': 'rcdd8mimc6gjtasan9ansn8354@group.calendar.google.com', 'summary': 'Nombre del calendario', 'timeZone': 'UTC'}`

## Cómo obtener la lista de calendarios de la cuenta de servicio

**URL de la función**: <https://store.salebot.ai/function/gcalendar> \
**Tipo de solicitud**: POST-json

**Parámetros**:

**creds\_path** - el enlace a la clave de acceso de la cuenta de servicio para la API del calendario (obtenido usando la instrucción anterior); \
**comando** - calendars\_list

**Valores almacenados**

Después de una ejecución exitosa, la función devuelve estos parámetros que puedes guardar y almacenar.

Un **ejemplo** de la respuesta de la función:

`{` \
&#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; `]` \
`}`

## Cómo trabajar con eventos

### Añadir un evento rápidamente

**URL de la función**: <https://store.salebot.ai/function/gcalendar> \
**Tipo de solicitud**: POST-json

**Parámetros**:

**creds\_path** - el enlace a la clave de acceso de la cuenta de servicio para la API del calendario (obtenido usando la instrucción anterior); \
**comando** - quick\_add\_event; \
**calendar\_id** - el id del calendario elegido;\
**event\_name** - el nombre del evento

Un **ejemplo** de los parámetros:

`{"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": "Evento increíble"}`

**Valores almacenados**

Después de una ejecución exitosa, la función devuelve estos parámetros que puedes guardar y almacenar. Para poder editar más tarde el evento creado, se recomienda guardar su id: id -> event\_id.

Un **ejemplo** de la respuesta de la función:

`{`\
`'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/693d88fc08f437f237cb5a28c9fc75242fcac721)

### Cómo añadir un evento

**URL de la función**: <https://store.salebot.ai/function/gcalendar> \
**Tipo de solicitud**: POST-json

#### Parámetros:

**creds\_path** - el enlace a la clave de acceso de la cuenta de servicio para la API del calendario (obtenido usando la instrucción anterior); \
**comando** - add\_event \
**calendar\_id** - el id del calendario elegido \
**event\_name** - el nombre del evento

También necesitas establecer una de dos opciones de parámetro: fecha O fecha y hora.

Si el evento tiene lugar durante todo el día, entonces necesitas especificar las fechas:

1. **start\_date** - la fecha en que comienza el evento en formato DD.MM.AAAA (por ejemplo, 23.07.2010)
2. **end\_date** - la fecha en que termina el evento en formato DD.MM.AAAA (por ejemplo, 24.07.2010)

Si el evento tiene lugar durante una hora determinada, entonces necesitas especificar la fecha y la hora:

1. start\_datetime - la fecha y la hora en que comienza el evento en formato DD.MM.AAAA HH:MM (por ejemplo, 23.07.2010 12:00)
2. end\_datetime - la fecha y la hora en que termina el evento en formato DD.MM.AAAA HH:MM (por ejemplo, 23.07.2010 13:00)
3. time\_zone - la zona horaria del evento. ID de zona horaria IANA. Por defecto es Europe/Moscow (GMT+3)

{% hint style="info" %}
Si las zonas horarias del calendario y del evento son diferentes, entonces el evento con hora se añadirá a la zona horaria del calendario.
{% endhint %}

Ejemplo:

El calendario está en la zona horaria (tz) Europe/Kyiv +3, y el evento se añade con la zona horaria Europe/Berlin +2. La hora del evento de las 12:00 (tz +2) se añadirá al calendario como las 13:00, porque en la hora de Kyiv las 13:00 son las 12:00 en la zona horaria +2.

**Parámetros adicionales:**

**event\_description** - la descripción del evento \
**location** - la ubicación geográfica del evento como texto libre \
**email\_minutes** - el tiempo en minutos antes del evento para enviar una notificación a los correos electrónicos de los participantes \
**popup\_minutes** - el tiempo en minutos antes del evento para enviar una notificación a los participantes como ventana emergente

Un ejemplo de los parámetros:

`{"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": "El evento más grande de todos los tiempos", "start_datetime": "27.07.2021 12:00", "end_datetime": "27.07.2021 14:00"}`

#### Valores guardados de la respuesta JSON:

Después de una ejecución exitosa, la función devuelve estos parámetros que puedes guardar y almacenar.

Para editar en el futuro el evento creado, se recomienda guardar su id:

**id -> event\_id**

#### Un ejemplo de la respuesta de la función:

`{'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': 'Nuevo evento44', 'description': 'Descri xbb xhjxkv', 'location': 'ciudad de Londres', '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)

### Editando el evento

**URL de la función**: <https://store.salebot.ai/function/gcalendar\\>
**Tipo de solicitud**: POST-json

#### Parámetros obligatorios:

**creds\_path** - el enlace a la clave de acceso de la cuenta de servicio para la API del calendario (obtenido usando la instrucción anterior); \
**comando** - update\_event; \
**calendar\_id** - el id del calendario; \
**event\_id** - el id del evento que necesitas editar

**Parámetros opcionales** para una actualización:

Puedes pasar uno o varios parámetros.

**event\_name** - el nombre del evento \
**event\_description** - la descripción del evento \
**email\_minutes** - el tiempo en minutos antes del evento para enviar una notificación a los correos electrónicos de los participantes \
**popup\_minutes** - el tiempo en minutos antes del evento para enviar una notificación a los participantes como ventana emergente

Si el evento tiene lugar durante todo el día, entonces necesitas especificar las fechas:

**start\_date** - la fecha en que comienza el evento en formato DD.MM.AAAA (por ejemplo, 23.07.2010) \
**end\_date** - la fecha en que termina el evento en formato DD.MM.AAAA (por ejemplo, 24.07.2010)

Si el evento tiene lugar durante una hora determinada, entonces necesitas especificar la fecha y la hora:

**start\_datetime** - la fecha y la hora en que comienza el evento en formato DD.MM.AAAA HH:MM (por ejemplo, 23.07.2010 12:00) \
**end\_datetime** - la fecha y la hora en que termina el evento en formato DD.MM.AAAA HH:MM (por ejemplo, 23.07.2010 13:00) \
**time\_zone** - la zona horaria del evento. ID de zona horaria IANA. Por defecto es Europe/Moscow (GMT+3)

Un ejemplo de los parámetros:

`{"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": "Evento editado", "start_datetime": "27.07.2021 12:00", "end_datetime": "27.07.2021 14:00","popup_minutes": "11","email_minutes": "22"}`

#### Valores guardados de la respuesta JSON:

Después de una ejecución exitosa, la función devuelve estos parámetros que puedes guardar y almacenar.

#### Un ejemplo de la respuesta de la función:

`{"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"}`

### Obteniendo una lista de eventos

**URL de la función**: <https://store.salebot.ai/function/gcalendar> \
**Tipo de solicitud**: POST-json

#### Parámetros:

**creds\_path** - el enlace a la clave de acceso de la cuenta de servicio para la API del calendario (obtenido usando la instrucción anterior); \
**comando** - get\_event\_list;\
**calendar\_id** - el id del calendario

Si no transfieres parámetros adicionales, el resultado será una lista de los eventos de hoy

**Parámetros adicionales:**

**start\_date** - la fecha a partir de la cual quieres buscar eventos en formato DD.MM.AAAA (23.07.2021) \
**end\_date** - la fecha hasta la cual quieres buscar eventos en formato DD.MM.AAAA (24.07.2021)

Un ejemplo de los parámetros:

Se encontrará el evento del 23 de julio

`{"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"}`

#### Valores guardados de la respuesta JSON:

Después de una ejecución exitosa, la función devuelve estos parámetros que puedes guardar y almacenar.

La lista de eventos encontrados se puede guardar en una variable:

**items -> event\_list**

#### Un ejemplo de la respuesta de la función:

`{'kind': 'calendar#events', 'etag': '"p33odnesrinsv20g"', 'summary': 'Test', 'description': 'Descripción de prueba', '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'}]}`

### Cómo mover eventos a otro calendario

**URL de la función**: <https://store.salebot.ai/function/gcalendar> \
**Tipo de solicitud**: POST-json

#### Parámetros:

**creds\_path** - el enlace a la clave de acceso de la cuenta de servicio para la API del calendario (obtenido usando la instrucción anterior); \
**comando** - move\_event; \
**calendar\_id** - el id del calendario desde el cual se mueve el evento;\
**event\_id** - el id del evento; \
**destination\_calendar\_id** - el id del calendario al cual se mueve el evento;

#### Valores guardados de la respuesta JSON:

Después de una ejecución exitosa, la función devuelve estos parámetros que puedes guardar y almacenar.

#### Un ejemplo de la respuesta de la función:

`{'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': 'Calendario de prueba'}, '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'}`

### Cómo obtener información sobre el evento

**URL de la función**: <https://store.salebot.ai/function/gcalendar> \
**Tipo de solicitud**: POST-json

#### Parámetros:

**creds\_path** - el enlace a la clave de acceso de la cuenta de servicio para la API del calendario (obtenido usando la instrucción anterior); \
**comando** - get\_event; \
**calendar\_id** - el id del calendario; \
**event\_id** - el id del evento

#### Valores guardados de la respuesta JSON:

Después de una ejecución exitosa, la función devuelve estos parámetros que puedes guardar y almacenar.

#### Un ejemplo de la respuesta de la función:

`{'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': 'Nuevo Evento44', 'description': 'Descri xbb xhjxkv', 'location': 'ciudad de Londres', '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'}`

### Cómo eliminar un evento

**URL de la función**: <https://store.salebot.ai/function/gcalendar> \
**Tipo de solicitud**: POST-json

#### Parámetros:

**creds\_path** - el enlace a la clave de acceso de la cuenta de servicio para la API del calendario (obtenido usando la instrucción anterior); \
**comando** - remove\_event; \
**calendar\_id** - el id del calendario; \
**event\_id** - el id del evento que quieres eliminar

#### Valores guardados de la respuesta JSON:

Después de una ejecución exitosa, la función devuelve estos parámetros que puedes guardar y almacenar.

#### Un ejemplo de la respuesta de la función:

`{'status': 'ok'}`

### Cómo añadir un participante al evento

**URL de la función**: <https://store.salebot.ai/function/gcalendar> \
**Tipo de solicitud**: POST-json

#### Parámetros:

**creds\_path** - el enlace a la clave de acceso de la cuenta de servicio para la API del calendario (obtenido usando la instrucción anterior); \
**comando** - add\_client; \
**calendar\_id** - el id del calendario; \
**event\_id** - el id del evento; \
**client\_email** - el correo electrónico del cliente que quieres añadir

Parámetros adicionales:&#x20;

**name** - el nombre del evento; \
**comment** - comentario del participante

**Un ejemplo de los parámetros:**

`{` \
`"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": "¡Seré el primero!"` \
`}`

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

#### Valores guardados de la respuesta JSON:

La función siempre devuelve el estado **add\_status**. Puede contener uno de tres valores:

**ok** - el cliente fue añadido \
**exist** - el cliente ya existe \
**error** - hubo un error durante el proceso de añadido, entonces además de add\_status habrá un parámetro error\_message con el texto del error

#### Un ejemplo de la respuesta de la función en caso de éxito:

`{'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;

### Cómo eliminar a un participante

**URL de la función**: <https://store.salebot.ai/function/gcalendar> \
**Tipo de solicitud**: POST-json

#### Parámetros:

**creds\_path** - el enlace a la clave de acceso de la cuenta de servicio para la API del calendario (obtenido usando la instrucción anterior); \
**comando** - remove\_client; \
**calendar\_id** - el id del calendario; \
**event\_id** - el id del evento; \
**client\_email** - el correo electrónico del cliente

#### Un ejemplo de los parámetros:

`{` \
`"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"` \
`}`

#### Valores guardados de la respuesta JSON:

La función siempre devuelve el estado **remove\_status**. Puede contener uno de tres valores:

**1** - el cliente fue eliminado con éxito \
**0** - el cliente no fue encontrado \
**error** - hubo un error durante el proceso de eliminación, entonces además de remove\_status habrá un parámetro error\_message con el texto del error

#### La respuesta de la función en caso de éxito:

`{'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/es/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.
