Power Automate: objetos JSON desde PowerApps y como usarlos.

Volviendo a Power Automate y los JSON, veamos el siguiente ejemplo en donde tenemos una aplicación de lienzo en blanco de PowerApps que tiene múltiples campos de entrada.

Una vez que el usuario envíe la forma, necesitaremos enviarle un correo de confirmación con toda la información que el usuario envió. Para hacer esto desde PowerApps, necesitaremos crear un objeto JSON que contenga todos los valores del formulario y luego pasarlo a Power Automate.

CREANDO EL OBJETO JSON FORMINFO

Primero crearemos una colección y añadiremos todas las entradas como valores de secuencia. Para el query OnSelect «Button1» necesitaremos crear primero esta colección:

ClearCollect(
     colInfo,{
      fname: txNombre.Text,
      lname: txApellido.Text,
      email: txEmail.Text,
      account: txMonto.Text,
      dob: Text(dpCuenta.SelectedDate)
      }
 );

Para entender mejor este código, nos encontramos creando cinco nuevas variables (Iname, fname, emil, account, dob) y estamos asignándoles valores de entrada de secuencia en la forma.

Después de eso necesitamos convertir esta colección a un objeto JSON.

Set(varJSON,JSON(FormInfo));

La variable se verá así:

Ahora podemos pasar este nuevo Objeto a un flujo de Power Automate, pero antes de hacer esto vamos a copiar el query completo para OnSelect dentro de un archivo de texto, tras lo cual seleccionaremos Acción > Power Automate y «Crear un nuevo flujo».

Esto abrirá el diseñador de flujo en otra pestaña. Seleccionaremos «Power Apps Button» como nuestra plantilla y empezaremos a crear el flujo.

CREANDO EL FLUJO PARA ENVIAR JSON EN POWER AUTOMATE

Nuestras acciones principales en el flujo de trabajo deberán ser:

  1. Obtener el objeto JSON varJSON desde el activador «PowerApp – PowerApps»
  2. Analizar JSON – acción «Parse JSON».
  3. Consigue los valores y los pone en un correo electrónico – acción «Send Email»

NOTA: Cualquier conexión/acción que queramos usar en el flujo deberá ser añadida al flujo antes de guardarlo y añadirlo a la PowerApp. Si añadimos acciones después de que fue añadido a PowerApp veremos un error como este:

Unable to process template language expressions in action 'Send_an_email' inputs at line '1' and column '2836': 'The template language expression 'json(decodeBase64(triggerOutputs().headers['X-MS-APIM-Tokens']))['$connections']['shared_office365_1']['connectionId']' cannot be evaluated because property 'shared_office365_1' doesn't exist, available properties are 'shared_office365'. Please see https://aka.ms/logicexpressions for usage details.'.

PASOS PARA EL DISEÑO DEL FLUJO

  1. Obtener varJSON de Power Apps: Seleccionaremos el activador PowerApps
  2. Añadiremos la acción «Parse JSON» y seleccionaremos «Body» como el contenido y “{}” como el esquema
  3. Añadiremos la acción «Send an email» y usaremos «Ask in PowerApps» como el cuerpo
  4. Renombraremos el flujo a algo de nuestra preferencia
  5. Guardaremos.
Power Automate JSON PowerApps 1

De acuerdo a este flujo, cualquier valor que venga a través del conector Power Apps deberá verse reflejado en el cuerpo del correo. La razón por la cual usamos una acción «Parse JSON» de prueba fue para crear esa conexión inicial con PowerApp.

PASANDO EL OBJETO VARJSON AL FLUJO

Una vez que el flujo esté configurado vamos a guardarlo y abrir el Power App de nuevo. Veremos el nuevo flujo bajo la Power App, daremos click en el flujo y será añadido al botón. Esto removerá el query OnSelect existente.

Ya que copiamos el query anterior a un archivo de texto, podemos copiar el query de nuevo desde ahí y pegarlo en el botón del query OnSelect. Junto con eso, vamos a necesitar añadir el siguiente código para pasar el objeto JSON a un flujo.

FormSubmit.Run(varJSON);

El Query completo deberá ser el siguiente:

ClearCollect(
     colInfo,{
      fname: txNombre.Text,
      lname: txApellido.Text,
      email: txEmail.Text,
      monto: txMonto.Text,
      dob: Text(dpCuenta.SelectedDate)
      }
 );
 Set(varJSON,JSON(colInfo));
 jsonses.Run(varJSON)

Dado que estamos añadiendo todos los formularios enviados a una colección, este array/colección contendrá valores desde el inicio; por lo tanto, necesitaremos limpiar la colección antes de cada envío para que solo el registro actual sea guardado en la colección y después transferido al flujo.

Ahora probemos la aplicación.

Power Automate JSON PowerApps 2

Deberemos recibir un correo que contenga el objeto de Power Apps.

Ahora veamos cómo podemos analizar el objeto JSON en el flujo y obtener los valores de las variables de campo para que podamos juntarlos con un formato de correo de nuestra preferencia.

De momento podemos obtener un objeto JSON como el siguiente como la salida de nuestro flujo:

[{"dob":"10/22/1990","email":"svallejo@excelcute.com","fname":"Sebastian","lname":"Vallejo","monto":"5000"}] 

ACTUALIZANDO LA ACCIÓN «PARSE JSON»

Vamos a incluir una variable del tipo String antes de usar el Parse JSON, esta tomará los valores de la salida de Power Apps.

Abriremos la acción «Parse JSON» y editaremos el esquema para obtener los valores requeridos, estos los copiaremos directo del correo. Daremos click en «Generar desde muestra», lo cual abrirá otra ventana en donde podremos introducir datos de objeto de muestra.

Power Automate JSON PowerApps 3

Ahora probemos este flujo, tras lo cual añadiremos las variables al cuerpo del correo. Es importante recordar que en cuanto empecemos a añadir variables en cualquier acción, estas serán anidadas dentro del contenedor «Apply to each».

Nuestro esquema JSON explicará el por qué de esto.

{
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "dob": {
                "type": "string"
            },
            "email": {
                "type": "string"
            },
            "fname": {
                "type": "string"
            },
            "lname": {
                "type": "string"
            },
            "monto": {
                "type": "string"
            }
        },
        "required": [
            "dob",
            "email",
            "fname",
            "lname",
            "monto"
        ]
    }
}

Para este punto habremos notado que cada envío es un objeto en el array y también que cada acción del flujo tiene un array como su entrada, la cual será repetida por cada objeto del array.

Ahora añadamos los campos dinámicos a la plantilla del correo.

Power Automate JSON PowerApps 4

¡Ahora probemos el flujo!

Así se verá la notificación por correo:

Podemos probar este método y pasar varias colecciones o parámetros desde PowerApps a flujos de Power Automate en JSON, y recuerda: esto puede darnos diferentes resultados dependiendo de nuestro esquema y acciones. Procura revisar ejecuciones previas y revisar cómo es que los valores se están pasando para poder formatear de manera adecuada.

Cualquier duda nos leemos abajo.

Power Automate: objetos JSON desde PowerApps y como usarlos.
Scroll hacia arriba