Cómo ejecutar Power Automate desde Excel con Office Scripts o VBA
Durante mucho tiempo, le he estado pidiendo a Microsoft la capacidad de ejecutar un flujo de Power Automate desde un script de Office. Los scripts de Office están restringidos para operar solo en objetos dentro del libro. Por lo tanto, actualmente no podemos ejecutar una secuencia de comandos que cambie otro libro o realice otras actividades fuera de Excel. Esto reduce significativamente el potencial de automatización de Office Scripts.
Sin embargo, en esta publicación, compartiré un método que podemos usar para ejecutar un flujo de Power Automate desde Excel usando Office Scripts o VBA.
NOTA: En el momento de escribir este artículo (enero de 2023), los scripts de Office están incluidos en las licencias de Excel 365 E3 y E5 y están disponibles para Excel Online y el canal interno de Excel Desktop (pero estoy seguro de que pronto llegará a todos los usuarios de 365). .
Tabla de contenido
- ¿Por qué ejecutar el flujo de Power Automate desde Excel?
- Configurar el flujo de Power Automate
- Editar la URL para parámetros
- Ejecución de Power Automate desde un script de Office
- Ejecutando Power Automate desde VBA
- Conclusión
¿Por qué ejecutar el flujo de Power Automate desde Excel?
Durante mucho tiempo, Excel y VBA han sido la plataforma de desarrollo para muchos trabajadores del lugar de trabajo que intentan automatizar sus tareas.
La última actualización importante de VBA fue en 2007. Desde entonces, Microsoft ha realizado un cambio significativo hacia soluciones en línea en lugar de soluciones de escritorio. Si bien VBA sigue siendo compatible, con el tiempo será cada vez menos útil a medida que más empresas avancen hacia soluciones en línea. Además, cada vez más empresas temen el riesgo de seguridad que supone VBA, por lo que hay un movimiento gradual hacia la desactivación total de VBA.
Entonces, ¿qué alternativas tienen los usuarios finales? Office Script y Power Automate parecen ser los contendientes más probables. Office Scripts proporciona el modelo de objetos de documento detallado para que podamos trabajar en Excel, mientras que Power Automate proporciona la integración entre aplicaciones.
Ya podemos ejecutar un script de Excel Office desde un flujo de Power Automate, como se muestra en esta publicación: Usar scripts de Office con Power Automate . Pero actualmente, no existe ningún método oficial para activar un flujo de Power Automate desde Excel. Pero gracias a un vídeo de Talia Cao y un poco de investigación, quiero mostrarles cómo crear la funcionalidad con el conjunto de herramientas existente.
Configurar el flujo de Power Automate
Comencemos creando el flujo de Power Automate.
Cree un flujo de nube instantáneo cuando se reciba una solicitud HTTP como desencadenante.
Los campos de este disparador son:
- HTTP POST URL : una vez que hacemos clic en guardar, se genera una URL única
- método : Una lista desplegable desde la que podemos seleccionar varias llamadas web (GET, PUT, POST, PATCH y DELETE). Para nuestros propósitos, GET es la mejor opción.
- relatedPath : esto proporciona una forma de devolver parámetros a Power Automate desde la cadena URL. Estos parámetros son opcionales y pueden excluirse por completo si no son necesarios. La sintaxis de esta sección es la siguiente:
{Parameter1}/{Parameter2}/{Parameter3}… etc.
En la captura de pantalla anterior: Parameter1 = {User} , Parameter2 = {Application}
NOTA : Cuando se recibe una solicitud HTTP, se requiere una licencia premium de Power Automate.
Complete el resto del flujo según sea necesario. A modo de ilustración, simplemente agregué un envío de correo electrónico. Los parámetros {Usuario} y {Aplicación} creados anteriormente se incluyen en el cuerpo del correo electrónico.
Después de hacer clic en guardar, el campo HTTP POST URL cambia a una URL única. Copie esta URL.
ADVERTENCIA: No comparta la URL. Es una URL única y abierta que cualquiera puede ejecutar, desde cualquier lugar.
Editar la URL para parámetros
En Excel, pegue la URL en una celda. Para nuestro ejemplo, usaremos la celda B2.
En el medio de la URL, verá que contiene los parámetros que configuramos.
https://......./{User}/{Application}.......
Como la URL es una cadena de texto, podemos:
- Cambiar los valores directamente en la URL
- Utilice las funciones de texto de Excel para cambiar los valores dinámicamente
Para nuestra ilustración, simplemente cambiaré la URL para incluir Mark en lugar de {Usuario} y Excel en lugar de {Aplicación} .
https://……./ Marca / Excel …….
Si los valores que proporcionamos en la URL incluyen algún carácter especial (incluidos espacios), debemos codificar esos caracteres. Por ejemplo, el carácter de espacio para la codificación de URL es %20, por lo tanto, Excel Off The Grid se convertiría en Excel%20Off%20The%20Grid .
Para ello podemos utilizar la función ENCODEURL de Excel. Aquí hay un ejemplo:
=ENCODEURL("Excel Off The Grid")
La fórmula anterior devuelve Excel%20Off%20The%20Grid
Sin embargo, ENCODEURL no está disponible en Excel Online, por lo que es posible que necesite un enfoque diferente. Consulte esta publicación para obtener una lista completa de los caracteres de codificación: https://www.w3schools.com/tags/ref_urlencode.asp
Al ejecutar el hipervínculo directamente desde Excel se abre una nueva ventana del navegador para ejecutar el flujo. Esto significa que debemos cerrar la ventana del navegador. Sería mejor ejecutar la URL sin abrir ningún navegador. Podemos hacer esto con Office Scripts.
Ejecución de Power Automate desde un script de Office
Bien, ahora hagamos que la URL se ejecute desde un script de Office.
En Excel, haga clic en Automatizar nuevo script
En el editor de código, ingrese el siguiente código:
function main(workbook: ExcelScript.Workbook) { let httpRequest = new XMLHttpRequest(); let myPath = workbook.getActiveWorksheet().getRange("B2").getText(); httpRequest.open("GET", myPath, false); httpRequest.send(null);}
Nombra el script y guárdalo.
Podríamos hacer clic en Ejecutar para ejecutar el script tal como está; sin embargo, ¿no sería bueno ejecutar esto desde un botón?
- Seleccione una celda en la hoja de trabajo donde colocar el botón.
- Haga clic en el . . . (más opciones) y luego seleccione Agregar botón .
El botón aparece en la hoja de trabajo. Haga clic en el botón para ejecutar el script, que luego ejecuta el flujo de Power Automate.
Ejecutando Power Automate desde VBA
Si prefiere ejecutar Power Automate desde VBA, también es posible. Utilice el siguiente código:
Sub RunPowerAutomate()Dim myPath As StringmyPath = Sheets("Sheet1").Range("B2").ValueWith CreateObject("MSXML2.XMLHTTP") .Open "GET", myPath, False .SendEnd WithEnd Sub
Conclusión
El uso del desencadenador cuando se recibe una solicitud HTTP es un método flexible para ejecutar un flujo de Power Automate desde muchas aplicaciones diferentes. El uso de este activador con Office Scripts abre más posibilidades de automatización directamente desde Excel.
Deja una respuesta