Google Sheets
Con la acción Google Sheets usas una hoja de cálculo normal como lista de clientes o como registro. Durante la conversación, el asistente puede buscar a un cliente por su número de cliente; al terminar, la acción añade una fila con la fecha, el teléfono, el resumen y tus propias variables. No hace falta programar, solo una preparación única en Google Cloud. Para configurarlo necesitas el rol Editor o Administrador en Yarla.
Preparación en Google Cloud
Yarla lee y escribe en tu hoja de cálculo mediante una cuenta de servicio: una cuenta técnica de Google que solo tiene acceso a lo que compartes expresamente con ella.
Los nombres de las pantallas de Google Cloud dependen del idioma de tu cuenta. Aquí aparecen en inglés, con el nombre en español entre paréntesis.
- Ve a Google Cloud Console y crea un proyecto nuevo o elige uno que ya tengas.
- Ve a APIs & Services → Library (APIs y servicios → Biblioteca), busca Google Sheets API y haz clic en Enable (Habilitar).
- Ve a IAM & Admin → Service accounts (IAM y administración → Cuentas de servicio) y haz clic en Create service account (Crear cuenta de servicio). Ponle un nombre reconocible, por ejemplo "yarla". No hace falta asignarle roles.
- Abre la cuenta de servicio, ve a la pestaña Keys (Claves) y elige Add key → Create new key → JSON (Agregar clave → Crear clave nueva → JSON).
- Descarga el archivo JSON y guárdalo en un lugar seguro. Contiene una clave privada; no lo compartas por correo ni por chat.
Añadir la conexión
- En Yarla, ve a Ajustes → Conexiones y haz clic en Añadir conexión.
- Ponle un nombre a la conexión y, en Tipo, elige Cuenta de servicio de Google (para Sheets).
- En Valor, pega todo el contenido del archivo JSON descargado y haz clic en Guardar.
La clave se guarda cifrada y no se vuelve a mostrar. Yarla no comprueba el contenido al guardarlo y no muestra el correo de la cuenta de servicio. Esa dirección (algo como yarla@tu-proyecto.iam.gserviceaccount.com) está en el archivo JSON, en client_email, o en la lista de cuentas de servicio de Google Cloud. La necesitas en el paso siguiente.
Compartir la hoja de cálculo
- Abre la hoja de cálculo en Google Sheets y haz clic en Compartir.
- Pega el correo de la cuenta de servicio.
- Elige el rol Editor. Es necesario para añadir filas; si solo quieres leer, basta con Lector.
- Desactiva la notificación y haz clic en Compartir.
Asegúrate de que los encabezados de columna están en la fila 1; la acción usa esos encabezados como nombres de campo.
Configurar la acción
- Abre el asistente, ve a la pestaña Tareas, abre Acciones, haz clic en Añadir nuevo y elige Google Sheets.
- Ponle un nombre a la acción y elige el Modo. Cuándo cambia solo: Añadir una fila (después de la llamada) lo pone en Después de la conversación, y Consultar filas (durante la llamada) en Durante la conversación.
- Rellena los ajustes siguientes.
La acción se guarda automáticamente en cuanto tiene un nombre y un id de la hoja de cálculo; no hay botón para guardar.
| Ajuste | Significado | Valor predeterminado |
|---|---|---|
| Modo | Añadir una fila (después de la llamada) o Consultar filas (durante la llamada) | Añadir una fila (después de la llamada) |
| Id de la hoja de cálculo | El id largo de la URL de la hoja de cálculo, entre /d/ y /edit. En https://docs.google.com/spreadsheets/d/1AbCdEfGhIjKlMnOpQrStUvWxYz/edit es 1AbCdEfGhIjKlMnOpQrStUvWxYz. | — |
| Nombre de la hoja | El nombre de la pestaña de abajo, por ejemplo Clientes u Hoja 1. Cambia el valor predeterminado si tu pestaña se llama de otra forma. | Sheet1 |
| Cuenta de servicio de Google | La cuenta de servicio de Ajustes → Conexiones. También puedes pegar aquí la clave JSON en Pegar una clave nueva y hacer clic en Guardar como clave. Después aparece entre tus conexiones con el nombre Google. | — |
Si luego cambias Cuándo a mano, el modo no cambia. Consultar filas solo funciona durante la conversación: si está en Después de la conversación, la acción se omite. Añadir una fila sí funciona durante la conversación: el asistente lo hace en cuanto se cumple tu condición. En ese momento, todas las variables integradas, como {{personNumber}}, {{startTimestamp}}, {{contact.name}}, {{conversationLink}}, {{summary}} y {{outcome}}, siguen vacías, igual que tus variables personalizadas. El asistente tampoco puede rellenarlas, porque este modo no tiene Parámetros que rellena el asistente. Esa fila queda casi vacía, así que deja la acción de añadir una fila en Después de la conversación.
Consultar filas (durante la llamada)
En este modo, el asistente busca filas con un Filtro. El filtro se escribe en JSON al estilo de MongoDB: la clave es el encabezado de la columna y el valor, un operador con un valor. Operadores disponibles: $eq, $ne, $in, $nin, $regex, $gt, $gte, $lt, $lte y $contains.
{ "Número de cliente": { "$eq": "{{customer_number}}" } }Un valor simple, como { "Estado": "abierto" }, funciona como $eq. Al comparar texto no importan las mayúsculas. $gt, $gte, $lt y $lte comparan números; una celda como 12,5 o 10 € no cuenta como número y queda fuera. Si dejas el filtro vacío, el asistente recibe las 5 primeras filas.
Además, configuras lo siguiente:
| Ajuste | Significado | Valor predeterminado |
|---|---|---|
| Parámetros que rellena el asistente | Los datos que el asistente saca de la conversación, por ejemplo customer_number (string, "El número de cliente que dice quien llama"). Úsalos en el filtro como {{customer_number}}. | — |
| ¿Cuándo debe usar esto el asistente? | Cuándo usa la acción el asistente y qué hace con el resultado, por ejemplo "Cuando quien llama diga su número de cliente. Confirma el nombre y la dirección y pregunta si los datos siguen siendo correctos." | — |
En una llamada, el asistente puede decir en pocas palabras que lo está comprobando mientras buscamos.
La acción devuelve las filas encontradas en JSON (5 filas como máximo), con los encabezados de columna como nombres de campo. Puedes combinar varias condiciones en un mismo objeto; todas tienen que cumplirse:
{
"Código postal": { "$regex": "^280" },
"Estado": { "$in": ["activo", "prueba"] }
}Si lo pruebas con Probar, activa Ejecutar las acciones de verdad. Si no, la acción solo se simula y el asistente no lee nada de tu hoja de cálculo.
Añadir una fila (después de la llamada)
En este modo, en Columnas, asocias columnas con plantillas. Cada línea tiene un encabezado de columna y el valor que va en ella:
| Columna | Plantilla |
|---|---|
| Fecha | {{startTimestamp}} |
| Teléfono | {{personNumber}} |
| Nombre | {{contact.name}} |
| Resultado | {{outcome}} |
| Resumen | {{summary}} |
| Código postal | {{postcode}} |
| Conversación | {{conversationLink}} |
{{postcode}} no es una variable integrada: añade postcode en Variables personalizadas que extraer y el asistente lo sacará de la conversación al terminar. {{startTimestamp}} es una marca de tiempo en formato ISO, como 2026-11-03T09:30:00.000Z. {{outcome}} es un código en inglés: resolved, transferred, appointment_booked, abandoned, no_interaction, spam, voicemail o callback_requested.
Si la hoja todavía está vacía, creamos automáticamente la fila 1 con los encabezados de columna. Si más adelante añades en la acción una columna que aún no está en la hoja, la ponemos al final. Las columnas existentes se identifican por su nombre exacto, así que el orden en tu hoja puede ser distinto del de la acción.
Ejemplos
Registro de conversaciones
Una acción con el modo Añadir una fila (después de la llamada) y las columnas de la tabla anterior. Deja vacío ¿Con qué condición debe ejecutarse después de la conversación?: así, cada conversación se convierte en una fila. Pon en la hoja un filtro en la columna Resultado con el valor callback_requested para ver de un vistazo todas las solicitudes de devolución de llamada, o usa postcode como variable propia para ver de qué zonas llegan más consultas.
Buscar a un cliente
Una hoja Clientes con las columnas Número de cliente, Nombre, Dirección y Contrato de mantenimiento. Crea una acción con el modo Consultar filas (durante la llamada) y:
- parámetro
customer_number(string, "El número de cliente que dice quien llama, normalmente de cinco cifras"); - filtro
{ "Número de cliente": { "$eq": "{{customer_number}}" } }; - en ¿Cuándo debe usar esto el asistente?: "Cuando quien llama diga su número de cliente. Di el nombre y pregunta si la dirección sigue siendo correcta. Indica si tiene contrato de mantenimiento."
El asistente dirá algo así: "Veo que eres la señora García, de la calle Mayor, con contrato de mantenimiento. ¿Es correcto?"
Solución de problemas
Si una fila falla después de la conversación, verás el error en la Bandeja: abre la conversación, despliega Detalles técnicos y mira en Qué hicieron las acciones. Yarla no vuelve a intentar esa fila. Si una búsqueda falla durante la conversación, el error no se guarda con la conversación. En una conversación de texto, el asistente sigue sin los datos y dice que ahora no puede obtenerlos. En una llamada con una voz de ChatGPT, si hay un error de Google o una clave no válida, el asistente no recibe respuesta: puede quedarse en silencio hasta que quien llama vuelva a hablar. En ese caso, repasa los puntos siguientes.
- Error 403 (sin acceso): la hoja de cálculo no está compartida con el correo de la cuenta de servicio, o solo como Lector y quieres añadir filas. Revisa la ventana de compartir de la hoja de cálculo.
- Error 404 (no encontrado): el id de la hoja de cálculo no es correcto. No pegues la URL completa.
- Error 400 (
Unable to parse range): el nombre de la hoja no existe. Copia el nombre exacto de la pestaña de abajo. no Google credential configuredoGoogle credential not found: la acción no tiene elegida una cuenta de servicio existente. Elige una en Cuenta de servicio de Google.- Error sobre la clave o sobre JSON: el valor de la conexión no es el archivo JSON completo. Vuelve a pegar el contenido con Sustituir en Ajustes → Conexiones. El valor nuevo puede tardar hasta 5 minutos en aplicarse.
- Resultado vacío al consultar: el encabezado de columna del filtro no coincide exactamente con la fila 1 (fíjate en las mayúsculas y los espacios), o el valor es distinto de lo que muestra la celda. Comparamos con el texto de la celda: un número de cliente que la hoja muestra como
12.345no coincide con"12345". Pon la columna de la hoja en formato de texto sin formato. - Teléfono sin el +: introducimos los valores como si los escribieras tú, así que Google Sheets puede guardar
+34612345678como número. Pon la columna de la hoja en formato de texto sin formato. - Una columna de más al final: los encabezados de la fila 1 se cambiaron después de configurar la acción. La acción no encuentra el nombre antiguo y crea una columna nueva. Asegúrate de que los nombres de la acción y de la hoja son iguales.
- Aviso de que la API no está habilitada: habilita la API de Google Sheets en el proyecto correcto (paso 2 de la preparación) y vuelve a intentarlo al cabo de unos minutos.
Artículos relacionados
- Acciones
- Petición HTTP
- Citas — un calendario se conecta de otra forma: iniciando sesión, sin cuenta de servicio