Ir al contenido

Excel Online Activities

Versión: 1.0.4  ·  ID: zoan-packages-excelonline  ·  Autor: Zoan Software

El paquete Excel Online lee y escribe libros .xlsx alojados en OneDrive o SharePoint a través de Microsoft Graph. Ofrece las mismas operaciones que el paquete Excel local (hoja, rango, celda), pero sobre la nube y con autoguardado: cada escritura queda guardada en el libro en el momento, sin paso de Save, y la ven al instante las personas que lo tienen abierto. No necesita Excel instalado en la máquina del robot.

Las actividades se autentican con una conexión OAuth de Microsoft 365 de Zoan Cloud. En Connect la referencias con la función credential() y su nombre clave:

Excel Online — Connect credential = credential("m365-finanzas") path = "Reportes/Ventas.xlsx"

Zoan Cloud entrega a la actividad un token de acceso vigente (lo renueva solo). Al crear la conexión, marca los permisos (scopes) de Microsoft Graph que cubran los libros que vas a abrir:

Permiso de Microsoft GraphPara qué
Files.ReadWriteLeer y escribir libros del OneDrive de la cuenta que autorizó la conexión.
Files.ReadWrite.AllLibros de otros usuarios (mailbox) o compartidos con la cuenta.
Sites.ReadWrite.AllLibros guardados en bibliotecas de documentos de SharePoint (driveId).
offline_accessQue Zoan Cloud pueda renovar el token sin volver a pedir el consentimiento.

Si solo vas a leer, bastan los permisos .Read equivalentes (Files.Read, Files.Read.All, Sites.Read.All); con ellos las escrituras fallan con accessDenied.

Connect ubica el libro con dos datos:

DatoQué esCómo se obtiene
Unidad (driveId)El OneDrive o la biblioteca de documentos donde está el libro.Por defecto, el OneDrive de la cuenta de la conexión (o el de mailbox). Para SharePoint, el ID de la biblioteca (Microsoft Graph lo devuelve en /sites/{sitio}/drives).
Libro (path o itemId)El archivo dentro de esa unidad.path es la ruta desde la raíz de la unidad (Reportes/Ventas.xlsx); itemId es el ID del archivo, por ejemplo el id que devuelve OneDrive/SharePoint — List files.

Dentro del libro, las hojas se indican por nombre (sheet) y las celdas y rangos en notación A1 (B3, A1:D20). El libro debe ser .xlsx.

Todas las operaciones trabajan sobre la sesión que abre Connect:

  • Con body: las actividades que pones dentro heredan la sesión y esta se cierra sola al terminar el bloque.
  • Sin body: Connect devuelve la sesión; pásala por session a las demás actividades y ciérrala con Close.
ActividadDevuelve
Read sheetDataTable con el rango usado de la hoja.
Read rangeDataTable si has-headers = true; si no, una List de filas (cada fila es una List de valores).
Read cellEl valor de la celda (string, número o bool).
Used rangeDictionary con rows, columns y address.
Find cellDictionary con address, row, column y value, o null si no hay coincidencia.
Get sheet namesList<string> con los nombres de las hojas, en su orden.

Los valores llegan tal como los guarda Excel: los números como número, los textos como string, las celdas vacías como texto vacío ("") y las fechas como número de serie de Excel (por ejemplo 45458); conviértelas con DateTime.FromOADate(...) si necesitas una fecha. Las escrituras (Write sheet, Write range, Append rows) reciben una DataTable (o una sola DataRow) y escriben solo los valores de las filas, sin la fila de nombres de columna.

Además de las validaciones propias de cada actividad, Microsoft Graph puede rechazar una operación. El error llega con el mensaje y el código que devuelve Microsoft (en inglés):

Código de Microsoft GraphCausa habitualQué hacer
InvalidAuthenticationToken (401)El valor de credential no es un token válido (por ejemplo, se escribió el nombre de la conexión sin credential()), o el token venció.Usa credential("nombre-clave") y verifica que la conexión esté Conectada en Zoan Cloud.
accessDenied (403)A la conexión le falta un permiso, o la cuenta no tiene acceso al libro.Agrega el permiso a la conexión y reconéctala, o comparte el libro con la cuenta.
itemNotFound (404)El libro, la unidad o la hoja no existen con ese nombre, ruta o ID.Revisa path/itemId/driveId y el nombre de la hoja (con Get sheet names).
InvalidArgument (400)Dirección A1 no válida, o un rango cuyo tamaño no coincide con los datos.Revisa cell/range; usa Write sheet para que el rango se calcule solo.
429, 503 o 504Microsoft limita temporalmente las solicitudes o el servicio no responde.Envuelve la actividad en un Retry con espera entre intentos.

Para que el proceso siga ante un fallo, usa Try / Catch.

ActividadTipoSalidaDescripción
Excel Online — Connectexcelonline-connectZoanExcelOnlineSessionAbre un libro de Excel Online (Microsoft Graph) por ruta o ID de elemento
Excel Online — Read sheetexcelonline-read-sheetDataTableLee todos los datos de una hoja y los devuelve como DataTable
Excel Online — Read rangeexcelonline-read-rangeDataTable | ListLee un rango de celdas
Excel Online — Read cellexcelonline-read-cellobjectLee el valor de una sola celda
Excel Online — Write sheetexcelonline-write-sheet—Escribe un conjunto de datos en la hoja empezando en A1
Excel Online — Write rangeexcelonline-write-range—Escribe valores en un rango (debe coincidir con el tamaño de los datos)
Excel Online — Write cellexcelonline-write-cell—Escribe un valor en una sola celda
Excel Online — Append rowsexcelonline-append-rows—Agrega filas después de los últimos datos existentes en una hoja
Excel Online — Clear rangeexcelonline-clear-range—Borra el contenido de un rango de celdas
Excel Online — Used rangeexcelonline-get-used-rangeDictionary<string,object>Devuelve las dimensiones del área usada: filas, columnas y dirección
Excel Online — Get sheet namesexcelonline-get-sheet-namesList<string>Devuelve la lista de nombres de hoja del libro
Excel Online — Find cellexcelonline-find-cellDictionary<string,object>Busca la primera celda con un valor dado
Excel Online — Closeexcelonline-close—Cierra una sesión de Excel Online