{"id":793,"date":"2024-05-06T11:11:54","date_gmt":"2024-05-06T09:11:54","guid":{"rendered":"https:\/\/www.mativait.com\/?p=793"},"modified":"2025-06-04T16:11:29","modified_gmt":"2025-06-04T14:11:29","slug":"actualizar-excel-con-power-automate-sin-utilizar-tablas-predefinidas","status":"publish","type":"post","link":"https:\/\/www.mativait.com\/es\/actualizar-excel-con-power-automate-sin-utilizar-tablas-predefinidas\/","title":{"rendered":"Integrar Excel en Power Automate sin utilizar tablas predefinidas"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Cuando trabajamos con <a href=\"https:\/\/www.mativait.com\/es\/que-es-microsoft-power-platform\/\" data-type=\"post\" data-id=\"684\">Power Automate<\/a>, a menudo nos encontramos con la necesidad de leer datos de una hoja de Excel. Sin embargo, Power Automate requiere que estos datos est\u00e9n en formato de tabla, una premisa que no siempre es viable, especialmente con archivos exportados directamente de un sistema ERP externo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para afrontar esta situaci\u00f3n, presentamos una soluci\u00f3n sencilla que les permitir\u00e1 actualizar Excel con Power Automate sin necesidad de utilizar el formato de tabla.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nuestra soluci\u00f3n implica la creaci\u00f3n autom\u00e1tica de una nueva pesta\u00f1a dentro del Excel, que contendr\u00e1 los datos originales convertidos en formato de tabla. Esta conversi\u00f3n se realizar\u00e1 mediante un script de Excel que se ejecutar\u00e1 a trav\u00e9s de Power Automate. A continuaci\u00f3n, detallaremos los pasos necesarios para implementar esta soluci\u00f3n:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Preparemos el script para actualizar Excel con Power Automate<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1<\/strong>. Comencemos abriendo un Excel de ejemplo como el que queremos leer desde el flujo de Power Automate.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2<\/strong>. Navegamos hasta la pesta\u00f1a &#8216;<code>Automate<\/code>&#8216; y seleccionemos &#8216;<code>New script<\/code>&#8216;.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"787\" height=\"345\" src=\"https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/04\/2024-04-25_10h45_43.png\" alt=\"Actualizar Excel con Power Automate\" class=\"wp-image-744\" srcset=\"https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/04\/2024-04-25_10h45_43.png 787w, https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/04\/2024-04-25_10h45_43-480x210.png 480w, https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/04\/2024-04-25_10h45_43-768x337.png 768w, https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/04\/2024-04-25_10h45_43-380x167.png 380w\" sizes=\"(max-width: 787px) 100vw, 787px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3. <\/strong>Copiamos el siguiente c\u00f3digo en el editor de scripts de Excel.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"342\" height=\"429\" src=\"https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/04\/2024-04-25_10h48_38.png\" alt=\"\" class=\"wp-image-747\" srcset=\"https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/04\/2024-04-25_10h48_38.png 342w, https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/04\/2024-04-25_10h48_38-303x380.png 303w\" sizes=\"(max-width: 342px) 100vw, 342px\" \/><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\">Script<\/h4>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<pre class=\"wp-block-code has-gray-900-color has-gray-200-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-b8b762b59446500f462f3e7a47a74cd5\"><code>function main(workbook: ExcelScript.Workbook) {\n\n    \/\/ Nombre de las hojas de c\u00e1lculo y de la tabla\n    const data_sheet_name: string = \"Sheet1\" \/\/ Nombre de la hoja donde se encuentran los datos\n    const copy_sheet_name: string = \"Table\" \/\/ Nombre de la hoja de copia a la que se trasladar\u00e1n los datos\n    const table_name: string = \"PowerAutomateTable\" \/\/ Nombre de la nueva mesa creada\n\n    \/\/Comprueba si la hoja \"Table\" ya existe\n    if (typeof workbook.getWorksheet(copy_sheet_name) === \"undefined\") {\n        \/\/ Si no existe, crea el hoja \"Table\"\n        workbook.addWorksheet(copy_sheet_name)\n    } else {\n        \/\/ Si existe, la hace invisible, la elimina y despu\u00e9s crea un nuevo hoja \"Table\"\n        workbook\n            .getWorksheet(copy_sheet_name)\n            .setVisibility(ExcelScript.SheetVisibility.hidden) \/\/ Hace la hoja invisible\n            .getWorksheet(copy_sheet_name)\n            .delete() \/\/ Elimina la hoja\n\n        workbook\n            .addWorksheet(copy_sheet_name) \/\/ Crear una nueva hoja \"Table\"\n    }\n\n    \/\/ Obtener referencias a las hojas de datos y de copia\n    let data_sheet =\n        workbook\n            .getWorksheet(data_sheet_name) \/\/ Obtener la hoja de datos original\n\n    let copy_sheet =\n        workbook\n            .getWorksheet(copy_sheet_name) \/\/ Obtener la nueva hoja \"Table\"\n\n\/\/ Obtener el intervalo de datos utilizado en la hoja de datos\n    let data_range =\n        data_sheet\n            .getUsedRange() \/\/ Obtener el intervalo de celdas con datos\n\n    \/\/Definir d\u00f3nde empezar\u00e1 la copia en la hoja \"Table\"\n    let copy_to_address = copy_sheet.getRange(\"A1\") \/\/ Inicia la copia en la celda A1 de la hoja \"Table\"\n\n   \/\/ Copiar los datos en la nueva hoja\n    copy_to_address.copyFrom(data_range, ExcelScript.RangeCopyType.all) \/\/ Copia todos los tipos de datos\n\n    \/\/ Obtener el intervalo utilizado despu\u00e9s de la copia\n    let copy_range = copy_sheet.getUsedRange() \/\/ Intervalo utilizado en la hoja \"Table\" despu\u00e9s de la copia\n\n  \/\/ Crear una tabla a partir del intervalo de copia y asignarle un nombre\n    workbook.addTable(copy_range, true).setName(table_name) \/\/ Crea una tabla con el nombre especificado\n\n}\n<\/code><\/pre>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>4<\/strong>. Modificamos los siguientes par\u00e1metros del script seg\u00fan nuestras preferencias y nuestro Excel:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code><strong>data_sheet_name<\/strong>:<\/code> Nombre de la hoja donde residen los datos originales.<\/li>\n\n\n\n<li><code><strong>copy_sheet_name<\/strong>: <\/code>Nombre de la hoja donde se copiar\u00e1n los datos.<\/li>\n\n\n\n<li><code><strong>table_name<\/strong>:<\/code> Nombre de la nueva tabla que se crear\u00e1.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>5<\/strong>. Ejecutamos el script y esperemos que finalice.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"353\" height=\"210\" src=\"https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/05\/image.png\" alt=\"\" class=\"wp-image-753\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>6<\/strong>. Verificamos que aparezca una nueva pesta\u00f1a con los datos organizados en formato de tabla.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"370\" height=\"243\" src=\"https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/05\/image-1.png\" alt=\"\" class=\"wp-image-755\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>7<\/strong>. Una vez hemos verificado que el script funciona correctamente, lo guardamos y comprobamos su ubicaci\u00f3n (habitualmente dentro de nuestro OneDrive). Es esencial localizar este script para su posterior integraci\u00f3n en Power Automate.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"342\" height=\"140\" src=\"https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/05\/image-2.png\" alt=\"\" class=\"wp-image-757\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>8<\/strong>. Buscamos el archivo del script (.osts) en nuestro OneDrive y lo movemos a un SharePoint que deber\u00e1 ser accesible desde el flujo de Power Automate donde queremos leer el Excel.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"433\" height=\"203\" src=\"https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/05\/image-3.png\" alt=\"\" class=\"wp-image-759\" srcset=\"https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/05\/image-3.png 433w, https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/05\/image-3-380x178.png 380w\" sizes=\"(max-width: 433px) 100vw, 433px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Aplicaci\u00f3n del script y lectura de la tabla<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>9<\/strong>. A\u00f1adimos \u201c<code><strong>Run script from SharePoint library<\/strong><\/code>\u201d en nuestro flow de PowerAutomate. Configuramos la ubicaci\u00f3n donde estar\u00e1 el Excel y la ubicaci\u00f3n de nuestro script. Este paso crear\u00e1 la tabla en nuestro Excel, y en caso de que exista, la sustituir\u00e1 con los nuevos datos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"612\" height=\"303\" src=\"https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/05\/image-4.png\" alt=\"\" class=\"wp-image-762\" srcset=\"https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/05\/image-4.png 612w, https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/05\/image-4-480x238.png 480w, https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/05\/image-4-380x188.png 380w\" sizes=\"(max-width: 612px) 100vw, 612px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>10<\/strong>. Mediante \u201c<code><strong>Get tables<\/strong><\/code>\u201d recuperamos todas las tablas de nuestro Excel.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"616\" height=\"193\" src=\"https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/05\/image-5.png\" alt=\"\" class=\"wp-image-764\" srcset=\"https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/05\/image-5.png 616w, https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/05\/image-5-480x150.png 480w, https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/05\/image-5-380x119.png 380w\" sizes=\"(max-width: 616px) 100vw, 616px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>11.<\/strong> Recuperamos los datos utilizando \u201c<code><strong>List rows present in a table<\/strong><\/code>\u201d. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si nuestro Excel tiene m\u00e1s de una tabla, recorremos las tablas recuperadas en el paso anterior hasta encontrar la del nombre configurado en el script <strong>(<\/strong><code>table_name<\/code>). Si como en el ejemplo, sabemos seguro que s\u00f3lo habr\u00e1 una tabla, podemos recuperar directamente la primera tabla devuelta con:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>first(outputs('Get_tables')?['body\/value'])?['id']<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"620\" height=\"271\" src=\"https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/05\/image-6.png\" alt=\"\" class=\"wp-image-766\" srcset=\"https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/05\/image-6.png 620w, https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/05\/image-6-480x210.png 480w, https:\/\/www.mativait.com\/wp-content\/uploads\/2024\/05\/image-6-380x166.png 380w\" sizes=\"(max-width: 620px) 100vw, 620px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Esperamos que le haya servido de ayuda este tutorial, y no dude en compartirlo si lo encuentra interesante, o en <a href=\"https:\/\/www.mativait.com\/es\/contacto\/\" data-type=\"page\" data-id=\"21\">contactar con nosotros<\/a> si lo necesita.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Soluci\u00f3n para actualizar Excel con Power Automate. Con este script podr\u00e1s integrar Excel en Power Automate sin utilizar tablas predefinidas<\/p>\n","protected":false},"author":2,"featured_media":1722,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[29],"tags":[33,31,32],"class_list":["post-793","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-power-platform-es","tag-excel","tag-powerautomate","tag-powerplatform"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.mativait.com\/es\/wp-json\/wp\/v2\/posts\/793","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mativait.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mativait.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mativait.com\/es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mativait.com\/es\/wp-json\/wp\/v2\/comments?post=793"}],"version-history":[{"count":14,"href":"https:\/\/www.mativait.com\/es\/wp-json\/wp\/v2\/posts\/793\/revisions"}],"predecessor-version":[{"id":823,"href":"https:\/\/www.mativait.com\/es\/wp-json\/wp\/v2\/posts\/793\/revisions\/823"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mativait.com\/es\/wp-json\/wp\/v2\/media\/1722"}],"wp:attachment":[{"href":"https:\/\/www.mativait.com\/es\/wp-json\/wp\/v2\/media?parent=793"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mativait.com\/es\/wp-json\/wp\/v2\/categories?post=793"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mativait.com\/es\/wp-json\/wp\/v2\/tags?post=793"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}