Hojas de cálculo de Google es una solución de hojas de cálculo basada en la nube que admite la colaboración en tiempo real y proporciona herramientas para visualizar, procesar y comunicar datos.
En este instructivo, se muestra cómo crear e implementar un flujo de trabajo que cree un extremo de devolución de llamada (o webhook), guarde la URL de devolución de llamada en Hojas de cálculo de Google, detenga la ejecución y espere la aprobación manual a través de la hoja de cálculo de Hojas de cálculo para reiniciar el flujo de trabajo. Obtén más información para usar devoluciones de llamada.
Objetivos
En este instructivo, podrás:
- Crea una carpeta nueva en Google Drive. Esta carpeta se usa para almacenar tu hoja de cálculo y permite que el flujo de trabajo escriba en la hoja de cálculo.
- Crear una hoja de cálculo de Google Sheets para capturar una aprobación e iniciar una devolución de llamada a un flujo de trabajo
- Usa Google Apps Script, una plataforma de JavaScript basada en la nube que te permite crear, leer y editar productos de Google Workspace de manera programática, para activar la reanudación de un flujo de trabajo detenido cada vez que se aprueba una solicitud a través de una actualización de la hoja de cálculo.
- Crea e implementa un flujo de trabajo que llame al conector de la API de Hojas de cálculo de Google para adjuntar datos a la hoja de cálculo. El flujo de trabajo se ejecuta, se detiene y, luego, se reanuda cuando se aprueba una devolución de llamada a través de la hoja de cálculo. Obtén más información sobre los conectores de Workflows.
- Prueba todo el proceso y confirma que el flujo de trabajo procede según lo esperado.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
En el instructivo, también se usa Google Workspace. Los servicios de nivel empresarial que no se incluyen en las aplicaciones para consumidores gratuitas de Google son facturables.
Antes de comenzar
Puedes ejecutar algunos de los siguientes comandos en la consola de Google Cloud o mediante Google Cloud CLI en tu terminal o en Cloud Shell.
Es posible que las restricciones de seguridad que define tu organización no te permitan completar los siguientes pasos. Para obtener información sobre la solución de problemas, consulta Desarrolla aplicaciones en un entorno de Google Cloud restringido.
Console
En la página del selector de proyectos de la consola de Google Cloud, elige o crea un proyecto de Google Cloud.
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.
Habilitar las APIs de Compute Engine, Hojas de cálculo y Workflows.
Toma nota de la cuenta de servicio predeterminada de Compute Engine, ya que la asociarás con el flujo de trabajo de este instructivo para realizar pruebas. Los proyectos nuevos que habilitaron la API de Compute Engine tienen esta cuenta de servicio creada con la función de editor básico de IAM y el siguiente formato de correo electrónico:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Puedes encontrar el número de proyecto en la página de bienvenida de la consola de Google Cloud.
Para los entornos de producción, te recomendamos crear una cuenta de servicio nueva, otorgarle una o más funciones de IAM que contengan los permisos mínimos necesarios y seguir el principio de privilegio mínimo.
gcloud
En la consola de Google Cloud, activa Cloud Shell.
En la parte inferior de la consola de Google Cloud, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.
Habilitar las APIs de Compute Engine, Hojas de cálculo y Workflows.
gcloud services enable \ compute.googleapis.com \ sheets.googleapis.com \ workflows.googleapis.com
Toma nota de la cuenta de servicio predeterminada de Compute Engine, ya que la asociarás con el flujo de trabajo de este instructivo para realizar pruebas. Los proyectos nuevos que habilitaron la API de Compute Engine tienen esta cuenta de servicio creada con la función de editor básico de IAM y el siguiente formato de correo electrónico:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Puedes recuperar el número de tu proyecto de la siguiente manera:
gcloud projects describe PROJECT_ID
Para los entornos de producción, te recomendamos crear una cuenta de servicio nueva, otorgarle una o más funciones de IAM que contengan los permisos mínimos necesarios y seguir el principio de privilegio mínimo.
Crea una carpeta nueva en Google Drive
Crea una carpeta nueva en Google Drive. Esta carpeta se utiliza para almacenar tu hoja de cálculo. Si configuras un permiso para la carpeta compartida, tu flujo de trabajo podrá escribir en la hoja de cálculo.
- Ve a drive.google.com.
- Haz clic en Nuevo > Nueva carpeta.
- Ingresa un nombre para la carpeta.
- Haz clic en Crear.
- Haz clic con el botón derecho en la carpeta nueva y selecciona Compartir.
Agrega la dirección de correo electrónico de la cuenta de servicio predeterminada de Compute Engine.
Esto le da a la cuenta de servicio acceso a la carpeta. Cuando asocies la cuenta de servicio con tu flujo de trabajo, este tendrá acceso de edición a cualquier archivo de la carpeta. Obtén más información para compartir archivos, carpetas y unidades.
Selecciona el rol Editor.
Desmarca la casilla de verificación Enviar notificaciones a las personas.
Haz clic en Compartir
Crea una hoja de cálculo con Hojas de cálculo de Google
Cuando creas una hoja de cálculo a través de Hojas de cálculo de Google, se guarda en Google Drive. De forma predeterminada, la hoja de cálculo se guarda en tu carpeta raíz en Drive. Con la API de Google Sheets, no es posible crear una hoja de cálculo dentro de una carpeta específica. Sin embargo, existen alternativas, incluida la de mover la hoja de cálculo a una carpeta específica después de crearla, como se hace en este ejemplo. Para obtener más información, consulta Trabaja con carpetas de Google Drive.
Ve a sheets.google.com.
Haz clic en Nuevo
.
Esto creará y abrirá tu nueva hoja de cálculo. Cada hoja de cálculo tiene un valor
spreadsheetId
único que contiene letras, números, guiones o guiones bajos. Puedes encontrar el ID de la hoja de cálculo en una URL de Hojas de cálculo de Google:https://docs.google.com/spreadsheets/d/spreadsheetId/edit#gid=0
Ten en cuenta este ID, ya que lo necesitarás cuando crees tu flujo de trabajo.
Agrega encabezados de columna que coincidan con el siguiente ejemplo:
Ten en cuenta que el valor de la columna G, Approved?, se usa para iniciar devoluciones de llamada en el flujo de trabajo.
Mueve la hoja de cálculo a la carpeta de Google Drive que creaste anteriormente:
- En la hoja de cálculo, selecciona Archivo > Mover.
- Navega a la carpeta que creaste.
- Haz clic en Mover.
También puedes usar el conector de la API de Hojas de cálculo de Google para crear una hoja de cálculo. Ten en cuenta que, cuando usas el conector, el spreadsheetId
se puede recuperar a partir del resultado de resp
.
Por ejemplo:
- create_spreadsheet: call: googleapis.sheets.v4.spreadsheets.create args: body: connector_params: scopes: ${driveScope} result: resp - assign_sheet_id: assign: - sheetId: ${resp.spreadsheetId}
Amplía Hojas de cálculo de Google con Apps Script
Apps Script te permite crear, leer y editar Hojas de cálculo de Google de manera programática. La mayoría de las secuencias de comandos diseñadas para Hojas de cálculo manipulan arrays para que interactúen con las celdas, filas y columnas de una hoja de cálculo. Para ver una introducción al uso de Apps Script con Hojas de cálculo de Google, consulta la guía de inicio rápido sobre funciones personalizadas.
Crea un proyecto de Apps Script a partir de Hojas de cálculo de Google:
- Abre tu archivo de Hojas de cálculo.
- Selecciona Extensiones > Apps Script.
- En el editor de secuencias de comandos, haz clic en Proyecto sin título.
- Asígnale un nombre al proyecto y haz clic en Cambiar nombre.
La secuencia de comandos ahora está vinculada a la hoja de cálculo, lo que le brinda a la secuencia de comandos capacidades especiales para alterar la interfaz de usuario o responder cuando se abra la hoja de cálculo.
Un proyecto de secuencia de comandos representa una colección de archivos y recursos de Apps Script. Los archivos de código en un proyecto de secuencia de comandos tienen una extensión
.gs
.Puedes usar Apps Script para escribir funciones personalizadas que puedes usar en Hojas de cálculo de Google como una función integrada. Las funciones personalizadas se crean con JavaScript estándar. Crea una función:
- Abre tu proyecto de Apps Script.
- Haz clic en Editor .
- Aparecerá un archivo de secuencia de comandos como un archivo de proyecto llamado
Code.gs
. Para editar el archivo, selecciónalo. Reemplaza cualquier código en el editor de secuencia de comandos por el siguiente código que lee los datos de la hoja de cálculo y los pasa como entrada a la ejecución de un flujo de trabajo:
Haz clic en Guardar
.
Los activadores instalables de Apps Script permiten que un proyecto de secuencia de comandos ejecute una función especificada cuando se cumplen ciertas condiciones, como cuando se abre o se edita una hoja de cálculo. Crea un activador:
- Abre tu proyecto de Apps Script.
- Haz clic en Activadores .
- Haz clic en Agregar activador.
- En el diálogo Agregar activador para YOUR_PROJECT_NAME, configura el activador:
- En la lista Elige qué función ejecutar, selecciona handleEdit.
- En la lista Choose what deployment should run, selecciona Head.
- En la lista Seleccionar la fuente del evento, elige Desde una hoja de cálculo.
- En la lista Seleccionar tipo de evento, elige Al editar.
- En la lista Configuración de notificaciones de errores, selecciona Notificarme diariamente.
- Haz clic en Guardar.
Si se te solicita elegir una Cuenta de Google, selecciona la cuenta correspondiente y haz clic en Permitir.
Esto permite que tu proyecto de Apps Script vea, edite, cree y borre tus hojas de cálculo de Hojas de cálculo de Google, y se conecte a un servicio externo.
Un archivo de manifiesto de proyecto de Apps Script es un archivo JSON que especifica la información básica del proyecto que Apps Script necesita para ejecutar una secuencia de comandos de forma correcta. Ten en cuenta que el editor de Apps Script oculta los archivos de manifiesto de forma predeterminada para proteger la configuración de tu proyecto de Apps Script. Edita el archivo de manifiesto:
- Abre tu proyecto de Apps Script.
- Haz clic en Configuración del proyecto .
- Selecciona la casilla de verificación Mostrar el archivo de manifiesto "appsscript.json" en el editor.
- Haz clic en Editor .
- El archivo de manifiesto aparece como un archivo de proyecto llamado
appsscript.json
. Para editar el archivo, selecciónalo. El campo
oauthScopes
especifica un array de cadenas. Para establecer los permisos de autorización que usa tu proyecto, agrega un arreglo con los alcances que quieras compatibles. Por ejemplo:{ "timeZone": "America/Toronto", "dependencies": { }, "exceptionLogging": "STACKDRIVER", "runtimeVersion": "V8", "oauthScopes": [ "https://www.googleapis.com/auth/script.external_request", "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/spreadsheets" ] }
Esto establece los alcances explícitos en:
- Se conecta a un servicio externo.
- Ver, editar, configurar y borrar tus datos de Google Cloud y ver la dirección de correo electrónico de tu Cuenta de Google
- Vea, edite, cree y borre todos sus archivos de Hojas de cálculo de Google
Haz clic en Guardar
.
Implementa un flujo de trabajo que escriba en una hoja de cálculo y use devoluciones de llamada
Implementa un flujo de trabajo que se ejecute, se detenga y, luego, se reanude cuando se apruebe una devolución de llamada a través de una hoja de cálculo. El flujo de trabajo escribe en una hoja de cálculo mediante el conector de la API de Hojas de cálculo de Google.
Console
En la consola de Google Cloud, ve a la página Flujos de trabajo:
Haz clic en
Crear.Ingresa un nombre para el flujo de trabajo nuevo:
workflows-awaits-callback-sheets
.En la lista Región, selecciona us-central1 (Iowa).
Para la Cuenta de servicio, selecciona la cuenta de servicio predeterminada de Compute Engine (
PROJECT_NUMBER-compute@developer.gserviceaccount.com
).Haz clic en Siguiente.
En el editor de flujos de trabajo, ingresa la siguiente definición para tu flujo de trabajo:
Asegúrate de reemplazar el valor de marcador de posición
sheetId
por tuspreadsheetId
.Haz clic en Implementar.
gcloud
Crea un archivo de código fuente para tu flujo de trabajo:
touch workflows-awaits-callback-sheets.yaml
En un editor de texto, copia el siguiente flujo de trabajo en tu archivo de código fuente:
Asegúrate de reemplazar el valor de marcador de posición
sheetId
por tuspreadsheetId
.Para implementar el flujo de trabajo, ingresa el siguiente comando:
gcloud workflows deploy workflows-awaits-callback-sheets \ --source=workflows-awaits-callback-sheets.yaml \ --location=us-central1 \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Reemplaza
PROJECT_NUMBER
por el número de proyecto de Google Cloud. Puedes recuperar el número de tu proyecto de la siguiente manera:gcloud projects describe PROJECT_ID
Prueba el flujo de extremo a extremo
Ejecutar el flujo de trabajo para probar el flujo de extremo a extremo Cuando se ejecuta un flujo de trabajo, se ejecuta la definición del flujo de trabajo actual asociada con este.
Console
En la consola de Google Cloud, ve a la página Flujos de trabajo:
En la página Flujos de trabajo, selecciona el flujo de trabajo workflows-awaits-callback-sheets para ir a la página de detalles.
En la página Detalles del flujo de trabajo, haz clic en play_arrow Ejecutar.
Haz clic de nuevo en Ejecutar.
Se inicia el flujo de trabajo y su estado de ejecución debe ser Running. Los registros también indican que el flujo de trabajo está detenido y en espera:
Execute steps here before waiting for callback from sheets ... Started waiting for callback from sheet 1JlNFFnqs760M_KDqeeeDc_qtrABZDxoalyCmRE39dpM
Verifica que el flujo de trabajo haya escrito los detalles de la devolución de llamada en una fila de tu hoja de cálculo.
Por ejemplo, deberías ver el ID de ejecución del flujo de trabajo en la columna Execution ID, un extremo de devolución de llamada en la columna Callback URL y FALSE en la columna Approved?.
En la hoja de cálculo, cambia FALSE a FALSE.
Al cabo de uno o dos minutos, se debe reanudar la ejecución y, luego, completarse con el estado de ejecución Sin errores.
gcloud
Abre una terminal.
Ejecuta el flujo de trabajo:
gcloud workflows run workflows-awaits-callback-sheets
Se inicia el flujo de trabajo, y el resultado debe indicar que está detenido y en espera:
Waiting for execution [a8361789-90e0-467f-8bd7-ea1c81977820] to complete...working.
Verifica que el flujo de trabajo haya escrito los detalles de la devolución de llamada en una fila de tu hoja de cálculo.
Por ejemplo, deberías ver el ID de ejecución del flujo de trabajo en la columna Execution ID, un extremo de devolución de llamada en la columna Callback URL y FALSE en la columna Approved?.
En la hoja de cálculo, cambia FALSE a FALSE.
Después de uno o dos minutos, se debe reanudar la ejecución y, luego, completarse con un estado de ejecución de
SUCCEEDED
.
Limpia
Si creaste un proyecto nuevo para este instructivo, bórralo. Si usaste un proyecto existente y deseas conservarlo sin los cambios que se agregaron en este instructivo, borra los recursos creados para el instructivo.
Borra el proyecto
La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.
Para borrar el proyecto, haz lo siguiente:
- En la consola de Google Cloud, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.