Hola a todos.
Hoy os presento este breve pero potentísimo truco que os permitirá trabajar de un modo mucho más ágil con Power Automate.
Gracias a él podremos copiar elementos de un flujo a otro y hasta crear nuestro propio repositorio de código en una simple hoja de texto que podremos gestionar cómodamente desde un editor como Visual Studio Code, Notepad++ o incluso desde un archivo de Word.
Vamos con ello. Para hacer esto solo tenemos que seguir 4 sencillos pasos.
- Añadir a nuestro flujo la cajita de Ámbito («scope» si lo tienes configurado en inglés).
- Meter el resto de cajas dentro. Aquí es importante hacerlo en orden de arriba a abajo para no tener problemas de dependencias entre ellas. Por otro lado las declaraciones de variables no se pueden colocar dentro de un ámbito pero podremos copiarlas también. Lo que no podremos copiar son los desencadenadores.
- Copiamos los elementos que queramos migrar a otro sitio (el ámbito puede contener prácticamente un flujo entero)
- Lo pegamos donde queramos. Puede ser en una hoja de texto o puede ser en otro flujo. La clave es ir al apartado del portapapeles y pulsar Ctrl + V. Y listo pegaremos en otro flujo el componente copiado.
Veamos un ejemplo.
En esta Imagen tengo un flujo que genera imágenes usando ChatGPT ¿Cómo debería actuar? Pues Fácil. Siguiendo los pasos anteriores. De esa manera pulso en los 3 puntitos del ámbito y la variable y luego en copiar al portapapeles.
Así se vería el código.
DECLARACION DE VARIABLE
{"id":"e7056ae8-4f0e-4c21-9966-9e3fbe538acf","brandColor":"#770BD6","connectionReferences":{"shared_office365":{"connection":{"id":"/grh_sharedoffice365_e8b18"}},"shared_openaiip_1":{"connection":{"id":"/grh_sharedopenaiip_91cff"}}},"connectorDisplayName":"Variables","icon":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzJweCIgaGVpZ2h0PSIzMnB4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogPHJlY3Qgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiBmaWxsPSIjNzcwQkQ2Ii8+DQogPGcgZmlsbD0iI2ZmZiI+DQogIDxwYXRoIGQ9Ik02Ljc2MywxMy42ODV2LTMuMjA4QzYuNzYzLDguNzQ4LDcuNzYyLDgsMTAsOHYxLjA3Yy0xLDAtMiwwLjMyNS0yLDEuNDA3djMuMTg4ICAgIEM4LDE0LjgzNiw2LjUxMiwxNiw1LjUxMiwxNkM2LjUxMiwxNiw4LDE3LjE2NCw4LDE4LjMzNVYyMS41YzAsMS4wODIsMSwxLjQyOSwyLDEuNDI5VjI0Yy0yLjIzOCwwLTMuMjM4LTAuNzcyLTMuMjM4LTIuNXYtMy4xNjUgICAgYzAtMS4xNDktMC44OTMtMS41MjktMS43NjMtMS41ODV2LTEuNUM1Ljg3LDE1LjE5NCw2Ljc2MywxNC44MzQsNi43NjMsMTMuNjg1eiIvPg0KICA8cGF0aCBkPSJtMjUuMjM4IDEzLjY4NXYtMy4yMDhjMC0xLjcyOS0xLTIuNDc3LTMuMjM4LTIuNDc3djEuMDdjMSAwIDIgMC4zMjUgMiAxLjQwN3YzLjE4OGMwIDEuMTcxIDEuNDg4IDIuMzM1IDIuNDg4IDIuMzM1LTEgMC0yLjQ4OCAxLjE2NC0yLjQ4OCAyLjMzNXYzLjE2NWMwIDEuMDgyLTEgMS40MjktMiAxLjQyOXYxLjA3MWMyLjIzOCAwIDMuMjM4LTAuNzcyIDMuMjM4LTIuNXYtMy4xNjVjMC0xLjE0OSAwLjg5My0xLjUyOSAxLjc2Mi0xLjU4NXYtMS41Yy0wLjg3LTAuMDU2LTEuNzYyLTAuNDE2LTEuNzYyLTEuNTY1eiIvPg0KICA8cGF0aCBkPSJtMTUuODE1IDE2LjUxMmwtMC4yNDItMC42NDFjLTAuMTc3LTAuNDUzLTAuMjczLTAuNjk4LTAuMjg5LTAuNzM0bC0wLjM3NS0wLjgzNmMtMC4yNjYtMC41OTktMC41MjEtMC44OTgtMC43NjYtMC44OTgtMC4zNyAwLTAuNjYyIDAuMzQ3LTAuODc1IDEuMDM5LTAuMTU2LTAuMDU3LTAuMjM0LTAuMTQxLTAuMjM0LTAuMjUgMC0wLjMyMyAwLjE4OC0wLjY5MiAwLjU2Mi0xLjEwOSAwLjM3NS0wLjQxNyAwLjcxLTAuNjI1IDEuMDA3LTAuNjI1IDAuNTgzIDAgMS4xODYgMC44MzkgMS44MTEgMi41MTZsMC4xNjEgMC40MTQgMC4xOC0wLjI4OWMxLjEwOC0xLjc2IDIuMDQ0LTIuNjQxIDIuODA0LTIuNjQxIDAuMTk4IDAgMC40MyAwLjA1OCAwLjY5NSAwLjE3MmwtMC45NDYgMC45OTJjLTAuMTI1LTAuMDM2LTAuMjE0LTAuMDU1LTAuMjY2LTAuMDU1LTAuNTczIDAtMS4yNTYgMC42NTktMi4wNDggMS45NzdsLTAuMjI3IDAuMzc5IDAuMTc5IDAuNDhjMC42ODQgMS44OTEgMS4yNDkgMi44MzYgMS42OTQgMi44MzYgMC40MDggMCAwLjcyLTAuMjkyIDAuOTM1LTAuODc1IDAuMTQ2IDAuMDk0IDAuMjE5IDAuMTkgMC4yMTkgMC4yODkgMCAwLjI2MS0wLjIwOCAwLjU3My0wLjYyNSAwLjkzOHMtMC43NzYgMC41NDctMS4wNzggMC41NDdjLTAuNjA0IDAtMS4yMjEtMC44NTItMS44NTEtMi41NTVsLTAuMjE5LTAuNTc4LTAuMjI3IDAuMzk4Yy0xLjA2MiAxLjgyMy0yLjA3OCAyLjczNC0zLjA0NyAyLjczNC0wLjM2NSAwLTAuNjc1LTAuMDkxLTAuOTMtMC4yNzFsMC45MDYtMC44ODVjMC4xNTYgMC4xNTYgMC4zMzggMC4yMzQgMC41NDcgMC4yMzQgMC41ODggMCAxLjI1LTAuNTk2IDEuOTg0LTEuNzg2bDAuNDA2LTAuNjU4IDAuMTU1LTAuMjU5eiIvPg0KICA8ZWxsaXBzZSB0cmFuc2Zvcm09Im1hdHJpeCguMDUzNiAtLjk5ODYgLjk5ODYgLjA1MzYgNS40OTI1IDMyLjI0NSkiIGN4PSIxOS43NTciIGN5PSIxMy4yMjUiIHJ4PSIuNzc4IiByeT0iLjc3OCIvPg0KICA8ZWxsaXBzZSB0cmFuc2Zvcm09Im1hdHJpeCguMDUzNiAtLjk5ODYgLjk5ODYgLjA1MzYgLTcuNTgzOSAzMC42MjkpIiBjeD0iMTIuMzY2IiBjeT0iMTkuMzE1IiByeD0iLjc3OCIgcnk9Ii43NzgiLz4NCiA8L2c+DQo8L3N2Zz4NCg==","isTrigger":false,"operationName":"Inicializar_variable","operationDefinition":{"type":"InitializeVariable","inputs":{"variables":[{"name":"imagenes","type":"string","value":"una imagen de un elefante rosa"}]},"runAfter":{},"metadata":{"operationMetadataId":"3d7b3c50-5422-4b1c-a8b3-7fbe44b19a19"}}}
ÁMBITO
{"id":"2fdc0401-0374-4fb0-8907-de240502f7d9","brandColor":"#8C3900","connectionReferences":{"shared_office365":{"connection":{"id":"/grh_sharedoffice365_e8b18"}},"shared_openaiip_1":{"connection":{"id":"/grh_sharedopenaiip_91cff"}}},"connectorDisplayName":"Control","icon":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDMyIDMyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KIDxwYXRoIGQ9Im0wIDBoMzJ2MzJoLTMyeiIgZmlsbD0iIzhDMzkwMCIvPg0KIDxwYXRoIGQ9Im04IDEwaDE2djEyaC0xNnptMTUgMTF2LTEwaC0xNHYxMHptLTItOHY2aC0xMHYtNnptLTEgNXYtNGgtOHY0eiIgZmlsbD0iI2ZmZiIvPg0KPC9zdmc+DQo=","isTrigger":false,"operationName":"Ámbito","operationDefinition":{"type":"Scope","actions":{"Create_an_Image":{"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_openaiip_1","operationId":"CreateImage","apiId":"/providers/Microsoft.PowerApps/apis/shared_openaiip"},"parameters":{"body/prompt":"@triggerBody()['text']","body/n":3,"body/size":"1024x1024","body/response_format":"url"},"authentication":{"type":"Raw","value":"@json(decodeBase64(triggerOutputs().headers['X-MS-APIM-Tokens']))['$ConnectionKey']"}},"runAfter":{},"metadata":{"operationMetadataId":"3e3329e6-8666-4371-89e5-8e5cee73ec43"}},"Aplicar_a_cada_uno":{"type":"Foreach","foreach":"@outputs('Create_an_Image')?['body/data']","actions":{"Anexar_a_la_variable_de_cadena":{"type":"AppendToStringVariable","inputs":{"name":"imagenes","value":"\n"},"runAfter":{},"metadata":{"operationMetadataId":"bb3a15f8-93a1-4ca7-aaff-2a0fbe78bf57"}}},"runAfter":{"Create_an_Image":["Succeeded"]},"metadata":{"operationMetadataId":"0ecd9440-e330-481b-9317-3f187b663999"}},"Enviar_correo_electrónico_(V2)":{"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_office365","operationId":"SendEmailV2","apiId":"/providers/Microsoft.PowerApps/apis/shared_office365"},"parameters":{"emailMessage/To":"grementeria@2lh1tb.onmicrosoft.com","emailMessage/Subject":"Ideas","emailMessage/Body":"Hola, en base a la descripción que me has mandado, \n
\n@{triggerBody()['text']}\n
\nhe elaborado estas imágenes:
\n
\n@{variables('imagenes')}","emailMessage/Importance":"Normal"},"authentication":{"type":"Raw","value":"@json(decodeBase64(triggerOutputs().headers['X-MS-APIM-Tokens']))['$ConnectionKey']"}},"runAfter":{"Aplicar_a_cada_uno":["Succeeded"]},"metadata":{"operationMetadataId":"3f3551dc-ff1e-4234-8f8c-4315936f9b09"}}},"runAfter":{"Inicializar_variable":["Succeeded"]}}}
Ahora solo tengo que ir a un nuevo flujo. Ir a la sección del portapapeles con nuestro código pegado. Pulsar en Ctrl + V y listo. Habremos trasladado nuestro código fácilmente.
Aquí lo pego. Y tras pegar los 2 componentes así queda.
Espero que os haya sido de utilidad. Un saludo.