Ir al contenido

Google Sheets Activities

Versión: 1.0.5  ·  ID: zoan-packages-googlesheets  ·  Autor: Zoan Software

El paquete Google Sheets lee y escribe hojas de cálculo de Google directamente en la nube (a través de su API). Es el equivalente de Excel para documentos de Google: ideal cuando los datos viven en una hoja compartida que varias personas o sistemas actualizan, sin descargar ni volver a subir archivos.

A diferencia de Excel (que abre un archivo local), Google Sheets accede a una hoja en la nube, así que necesita autorización. Google Sheets — Open admite dos modos, que eliges con authType:

ModoQué necesitasCuándo conviene
oauth (por defecto)Una conexión OAuth de Google creada y autorizada en Zoan Cloud con el permiso de Sheets. Se pasa en credential como credential("nombre-clave"). Zoan Cloud renueva el token solo.El robot actúa sobre la cuenta de una persona o de un buzón del equipo.
service-accountUna llave de service account (el JSON completo) guardada como credencial, en serviceAccount. La hoja debe estar compartida con el email de la service account. Opcional: impersonateUser para actuar en nombre de un usuario del Workspace (domain-wide delegation).Ejecuciones desatendidas sin consentimiento de una persona.

En los dos modos las actividades usan el permiso de lectura y escritura de hojas de cálculo (https://www.googleapis.com/auth/spreadsheets).

Lo que necesitasDónde se obtiene
ID de la hoja (spreadsheetId)Está en la URL de la hoja: docs.google.com/spreadsheets/d/{ID}/edit — copia la parte {ID}.

Todas las operaciones trabajan sobre una sesión (ZoanGoogleSheetsSession) que abres con Google Sheets — Open y compartes con las demás actividades:

  • Con body: las actividades dentro heredan la sesión sin indicar session; al terminar se cierra sola, aunque algo falle.
  • Sin body: guardas la sesión en una variable, la pasas en session y la cierras con Google Sheets — Close.
Google Sheets — Open credential = credential("google-operaciones") spreadsheetId = idHoja
└─ body:
Google Sheets — Read sheet sheet = "Pedidos" has-headers = true → output: pedidos
... procesar ...
  • Celdas y rangos usan notación A1: A1, B3, A1:E10, A:E (columnas completas), 1:100 (filas completas).
  • Hojas: por nombre ("Pedidos"). Si lo omites, se usa la primera hoja del documento. Escribe el nombre tal cual, sin comillas: la actividad lo pone entre comillas simples y duplica el apóstrofo que tenga, así funcionan nombres como Ventas O'Brien, Hoja con espacios o A1. Desde la versión 1.0.5.
  • Lo que se lee es texto: las lecturas devuelven el valor tal como se ve en la hoja (con su formato de número y fecha), siempre como string. Convierte con num() o con las funciones de fecha antes de calcular. Una fórmula se lee como su resultado.
  • has-headers: en Read sheet y Read range, con true la primera fila da los nombres de columna de la DataTable; con false (por defecto) las columnas se llaman Column1, Column2, … El resultado es siempre una DataTable.
ActividadTipoSalidaQué hace
Google Sheets — Opengooglesheets-openZoanGoogleSheetsSessionAbre una sesión autenticada con una hoja
Google Sheets — Closegooglesheets-close—Cierra la sesión
ActividadTipoSalidaQué hace
Read sheetgooglesheets-read-sheetDataTableLee toda una hoja
Read rangegooglesheets-read-rangeDataTableLee un rango
Read cellgooglesheets-read-cellobjectLee una celda
Used rangegooglesheets-get-used-rangeDictionary<string,object>Dimensiones del área con datos
Get sheet namesgooglesheets-get-sheet-namesList<string>Nombres de las hojas
Find cellgooglesheets-find-cellDictionary<string,object>Encuentra una celda por valor
Find rowgooglesheets-find-rowDictionary<string,object>Encuentra una fila por valor de columna
ActividadTipoSalidaQué hace
Write sheetgooglesheets-write-sheet—Escribe datos desde A1
Write rangegooglesheets-write-range—Escribe desde una celda
Write cellgooglesheets-write-cell—Escribe una celda
Append rowsgooglesheets-append—Agrega filas al final
Clear rangegooglesheets-clear-range—Limpia el contenido de un rango

Cuando Google rechaza una llamada, la actividad falla con un error de tipo GoogleApiException cuyo mensaje empieza por The service sheets has thrown an exception. HttpStatusCode is … seguido del texto de Google (siempre en inglés: lo envía Google). El código indica la causa:

CódigoCausa habitualQué hacer
NotFoundEl spreadsheetId no existe o se copió mal.Copia el ID desde la URL de la hoja.
BadRequest (Unable to parse range: …)La hoja o el rango no existen (nombre de hoja mal escrito, rango inválido).Comprueba los nombres con Get sheet names.
ForbiddenLa cuenta no tiene acceso a la hoja, o la conexión no incluye el permiso de Sheets.Comparte la hoja con la cuenta (o con el email de la service account) o reautoriza la conexión con el permiso.
UnauthorizedEl token ya no es válido (acceso revocado, conexión expirada).Reconectar la conexión en Zoan Cloud.
TooManyRequestsSe superó la cuota de solicitudes por minuto de Google.Agrupa lecturas y escrituras (una DataTable en vez de muchas celdas) y envuelve la actividad en Retry con espera.

Captura cualquiera de ellos con Try / Catch; error.Type vale GoogleApiException.