20 abril, 2024

ELIMINAR ELEMENTOS DE UNA GALERÍA DE POWER APPS Y NOTIFICAR ITEMS POR CORREO CON POWER AUTOMATE

Hola a todos!

Hace unas semanas publicaba una forma de eliminar Ítems de una galería de Power Apps usando Power Automate: ELIMINAR ELEMENTOS DE UNA GALERÍA DE POWER APPS USANDO UN FLUJO DE POWER AUTOMATE

Pues bien, hoy vamos con otra variante: Vamos a borrar los elementos seleccionado en esa galería mediante un loop en Power Apps y vamos a notificar mediente una tabla formateada con CSS por correo el detalle de los elementos eliminados (usando Power Automate).

Es decir, que con este procedimiento llevamos el control desde Power Apps, mientras que con el anterior es con Power Automate.

Lo primero que vamos a hacer es crear un botón para:

  • Guardar en una colección los elementos que vamos a eliminar.
  • Crear una tabla en Html y con estilos Css.
  • Eliminar los registros en la lista y en la galería de SharePoint y Power Apps
  • Pasar los elementos necesarios al flujo de Power Automate para que dispare un correo con la tabla resumen.

Este es el código completo con todos los elementos que acabo de indicar:

// Crear una colección de los elementos a eliminar
ClearCollect(ItemsParaEliminar; Filter(Gallery12.AllItems; Checkbox4.Value = true));;
//Si no hay elementos seleccionados no hacemos nada
If(
    IsEmpty(ItemsParaEliminar);
    "";
// Construir una tabla HTML como cadena de texto con más estilo y detalles
Set(
    TablaHTML;
    "<style>" &
    "table {width: 100%; border-collapse: collapse; margin: 25px 0; font-size: 0.9em; font-family: sans-serif; min-width: 400px; box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);}" &
    "th, td {padding: 12px 15px;}" &
    "th {background-color: #009879; color: #ffffff; text-align: left;}" &
    "tr {border-bottom: 1px solid #dddddd;}" &
    "tr:nth-of-type(even) {background-color: #f3f3f3;}" &
    "tr:last-of-type {border-bottom: 2px solid #009879;}" &
    "tr.active-row {font-weight: bold; color: #009879;}" &
    "</style>" &
    "<table>" &
    "<thead>" & 
        "<tr>" &
            "<th>Nombre Completo</th>" &
            "<th>Sección</th>" &
        "</tr>" &
    "</thead>" &
    "<tbody>" &
        Concat(
            ItemsParaEliminar;
            "<tr>" &
                "<td>" & 'NOMBRE COMPLETO' & "</td>" &
                "<td>" & SECCION & "</td>" &
            "</tr>"
        ) &
    "</tbody>" &
    "</table>"
);;
//Ejecutamos flujo
NOTIFICAR.Run("Segu@micorreo.com";"LISTADO DE ELEMENTOS ELIMINADOS";TablaHTML);;
//Eliminamos elementos en la lista de SharePoint
ForAll(
    Gallery12.AllItems;
    If(
        Checkbox4.Value;
        Remove(
            'NUEVA LISTA';
            ThisRecord
        ) 
    )
)
)

Por lo tanto:

Guardar en una colección los elementos que vamos a eliminar:

ClearCollect(ItemsParaEliminar; Filter(Gallery12.AllItems; Checkbox4.Value = true));;

Luego con un If condicional ejecutamos el resto del código solo si se han seleccionado algún checkbox de nuestra galería 12. A continuación generamos la tabla con los elementos, en nuestra caso queremos registrar el ‘NOMBRE PROPIO’ y la SECCION en la que trabajan los empleados:

Set(
    TablaHTML;
    "<style>" &
    "table {width: 100%; border-collapse: collapse; margin: 25px 0; font-size: 0.9em; font-family: sans-serif; min-width: 400px; box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);}" &
    "th, td {padding: 12px 15px;}" &
    "th {background-color: #009879; color: #ffffff; text-align: left;}" &
    "tr {border-bottom: 1px solid #dddddd;}" &
    "tr:nth-of-type(even) {background-color: #f3f3f3;}" &
    "tr:last-of-type {border-bottom: 2px solid #009879;}" &
    "tr.active-row {font-weight: bold; color: #009879;}" &
    "</style>" &
    "<table>" &
    "<thead>" & 
        "<tr>" &
            "<th>Nombre Completo</th>" &
            "<th>Sección</th>" &
        "</tr>" &
    "</thead>" &
    "<tbody>" &
        Concat(
            ItemsParaEliminar;
            "<tr>" &
                "<td>" & 'NOMBRE COMPLETO' & "</td>" &
                "<td>" & SECCION & "</td>" &
            "</tr>"
        ) &
    "</tbody>" &
    "</table>"
);;

Luego ejecutamos el flujo (luego explicaré como se crea):

NOTIFICAR.Run("Segu@micorreo.com";"LISTADO DE ELEMENTOS ELIMINADOS";TablaHTML);;

y finalmente usando un For All que itera sobre la galería para comprobar lo que hemos seleccionado, eliminamos los elementos de la lista.

ForAll(
    Gallery12.AllItems;
    If(
        Checkbox4.Value;
        Remove(
            'NUEVA LISTA';
            ThisRecord
        ) 
    )
)

Este código irá en un botón de nuestra hoja de Power Apps en la propiedad OnSelect:

Y para que funcione tendréis que crear un flujo en Power Automate:

Lo podéis crear desde cero en:

Y podéis usar si queréis un flujo predefinido (el que os indico). Y una vez apliquéis, lo podéis configurar así:

Y estos van a ser los parámetros que le paséis a la función. Run de nuestro Power Apps:

NOTIFICAR.Run("Segu@micorreo.com";"LISTADO DE ELEMENTOS ELIMINADOS";TablaHTML);;

Donde en el primer campo van los correos a los que se desea enviar la información, en el segundo campo el asunto: LISTADO DE ELEMENTOS ELIMINADOS y finalmente en el cuerpo del correo la tabla que hemos creado con el resumen de los datos.

Todo esto obviamente lo podéis modificar y adaptar a vuestras necesidades.

En el ejemplo, si seleccionamos estos elementos:

Recibimos este correo (además de eliminarse los registros):

Y esto es todo!!, espero que sea de utilidad.

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies