Hablemos de Power Automate y su capacidad de recibir archivos desde Microsoft Forms.
Microsoft Forms es una gran forma de crear formas fáciles y rápidas para que clientes, compañeros e invitados puedan llenar cualquier tipo de datos que desees conseguir. Claro que no es tan avanzado si queremos ir más allá de validación básica con texto y números, pero para muchos escenarios de negocios es más que suficiente y sobre todo, muy barato de implementar.
Una de las cosas más útiles es la habilidad de adjuntar archivos a un formulario de respuesta. El usuario que recibe puede subir un número de formato de archivos soportados y nosotros podemos hacer cosas con esos mismos archivos en Power Automate.
Aun cuando suena simple, esto puede no ser tan intuitivo para usuarios nuevos.
Detalles de la respuesta en el attachment
Por ejemplo, tengo este flujo simple que se activa en un formulario de respuesta,tras lo cual obtenemos los detalles de la respuesta y finalmente la pregunta «Attach some files».
Cuando corremos el flujo y miramos la salida tenemos el documento JSON formateado como una secuencia. No nos es muy útil cuando se ve así:
Por lo cual deberemos procesarlo. Primero convertiremos a JSON. Usaremos la salida de este compose para pasar como Sample JSON y construir el body en la acción Parse JSON:
Lo cual nos dará algunos datos que ya podremos usar:
Ahora podemos añadir un «Apply to each loop» al flujo y poner la salida de este JSON Adjunto como la entrada. Dentro de ello usaremos una acción «OneDrive Get file content» para obtener el contenido del archivo, con la entrada del Archivo siendo «items(‘Apply_to_each’)?[‘id’]» (asumiendo que nuestro loop aun se llame «Apply to each»).
Podemos usar esta salida para guardar un archivo dentro de SharePoint usando Crear archivo. El nombre del archivo está disponible dentro del loop como «items(‘Apply_to_each’)?[‘name’]».
Usando los archivos en un array.
Digamos que queremos adjuntar todos los archivos de la forma en un correo electrónico. Para ello tendríamos que construir un array de adjuntos que incluya el contenido. Iremos un par de pasos hacia atrás e iniciaremos una variable de array antes del loop:
Ahora agregaremos una acción «Append to array variable» dentro del loop con el esquema de esta forma:
Fuera del loop añadiremos nuestra acción «Send an email». Daremos click en el icono junto a los archivos adjuntos para cambiar la entrada JSON.
Hay muchas otras maneras para manejar los archivos en lugar de adjuntar a un correo, este es solo un ejemplo. El punto de esta entrada es tener en cuenta los siguientes puntos cuando se quiera usar Power Automate para recopilar archivos desde Microsoft Forms:
- Los archivos adjuntos de MS Form son guardados en la cuenta de OneDrive de la persona que hizo la forma
- El array JSON que contiene datos sobre dónde están esos archivos y sus metadatos es serializando una secuencia
- Necesitamos de-serializar la secuencia en un array usando json()
- Procesar cada objeto del array en un «Apply to each» para obtener el contenido del archivo usando la acción «OneDrive Get file content»
- La propiedad que necesitamos introducir dentro de la acción «Get file contact» es «items(‘Apply_to_each’)?[‘id’]»
- El nombre del archivo es «items(‘Apply_to_each’)?[‘name’]»
Cualquier duda, nos leemos abajo.