Problème avec If et Filter pour envoyer une Notif.Run

  • Problème avec If et Filter pour envoyer une Notif.Run

    Posté par Ange sur 6 septembre 2024 à 22h04

    Ce code me donne des erreurs et je ne comprends pas pourquoi.

    Pourriez-vous m’aider svp ?

    <div>
    <div>If(</div>
    <div>// Condition de filtrage sur la date</div>
    <div>Filter(BrowseGallery1.AllItems; DateDiff(Today(); Value(Body1_2.Text); TimeUnit.Days) = 180)</div>
    <div> </div>
    <div>// Action : envoi d’une notification si la condition est vraie</div>
    <div>NotifHabilyt.Run(</div>
    <div>”Bonjour,” & Char(10) &</div>
    <div>”L’habilitation à la fonction de ” & Subtitle1_1.Text &</div>
    <div>” de M. ” & Title1.Text &</div>
    <div>” a atteint 180 jours, veuillez programmer une formation avant le ” & Body1_1.Text & “.”;</div>
    <div>””</div>
    <div>)</div>
    <div>)</div>
    </div>

    Nelson a répondu Il y a 2 mois 2 Membres · 6 Réponses
  • 6 Réponses
  • Nelson

    Membre
    6 septembre 2024 à 22h23

    Bonjour Ange,

    Peux-tu être plus précises sur le contexte et les erreurs qui te sont retournées s’il te plait.

    Je regarde très vite fait ton code et mon premier constat est :

    Tu utilises Filter, ce qui va te renvoyer x éléments.

    Actuellement, le moteur de powerapps, ne peut pas essayer ta condition puisqu’elle ne sait pas pour quel élément tu veux vérifier l’égalité avec ta valeur “180”.

    Si tu as une galerie, avec tes éléments et que tu veux envoyer ta notification aux personnes avec la valeur “180”.

    Tu vas devoir passer par l’usage de ForAll avec l’utilisation de ton filter.

    Pour dire “je boucle(ForAll) sur l’ensemble des éléments qui sont retournés par mon Filter et si l’élément sur lequel ma boucle est entrain de passer, j’envoi une notification.

    J’attends de tes nouvelles.

    Bonne soirée et bon week-end.

  • Ange

    Membre
    6 septembre 2024 à 22h25

    merci Nelson, je viens juste à l’instant de trouver la soulution.

    <div>
    <div>ForAll(</div>
    <div>// Condition de filtrage sur la date</div>
    <div>Filter(BrowseGallery1.AllItems; DateDiff(Today(); Body1_1.Text; TimeUnit.Days) = 180);</div>
    <div> </div>
    <div>// Action : envoi d’une notification si la condition est vraie</div>
    <div>NotifHabilyt.Run(</div>
    <div>”Bonjour,” & Char(10) &</div>
    <div>”L’habilitation à la fonction de ” & Subtitle1_1.Text &</div>
    <div>” de M. ” & Title1.Text &</div>
    <div>” a atteint 180 jours, veuillez programmer une formation avant le ” & Body1_1.Text & “.”</div>
    <div>)</div>
    <div>)</div>

    </div>

  • Nelson

    Membre
    6 septembre 2024 à 22h33

    Génial Ange !

    C’est exactement le process que tu devais mettre en place.

    N’hésite pas à utiliser le As dans ton ForAll pour être plus clair pour le futur.

    Tu as absolument besoin d’un flux power automate pour envoyer ta notification ?

    Via quel moyen envoi tu ta notification ?

    Si c’est un email ou une notification dans ses deux cas de figures, tu n’as pas besoin de passer par un flux. (Si c’est juste pour envoyer une notification, je ne sais deviner l’ensemble du process que tu as mis dans ton flux “NotifHabilyt” 😉 )

  • Ange

    Membre
    7 septembre 2024 à 9h27

    Bonjour Nelson,

    oui j’ai mis en place une procédure power automate pour envoyer une mail à un groupe de personnes dès que l’appli est lancée. Mais, ce que j’aurais voulu cest que ces mails soient envoyés non en fonction de l’ouverture de l’appli mais en fonction de la liste share point pour ne pas louper l’alerte.

  • Nelson

    Membre
    7 septembre 2024 à 9h37

    Rien ne t’en empêche Ange.

    Tu dois donc commencer ton flux power automate avec une action récurante tous les jours.

    Tu utilises ensuite l’action “Obtenir les éléments” pour ta liste.

    Dans cette action, au niveau du filtre tu mets ceci :

    <div>
    <pre class=”language-markup”>LE_NOM_DE_TA_COLONNE_QUI_CONTIENT_LA_DATE eq 'formatDateTime(addDays(utcNow(), -180), 'yyyy-MM-dd')'

    Via ce filtre, tu vas donc obtenir les éléments donc la date actuelle – 180 sont égales à ce que contient ta colonne.

    Ensuite, tu vas utiliser l’action “Appliquer à chacun” en utilisant la valeur obtenu via ton action précédente “Obtenir les éléments”.

    Et dedans pour chaque élément, tu vas pouvoir envoyer ton email de rappel.

    </div>

  • Nelson

    Membre
    7 septembre 2024 à 9h51

    Voici ce que tu devrais avoir de ton côté.

Connectez-vous pour répondre.