Comparer un fichier CSV à une liste sharepoint

  • Comparer un fichier CSV à une liste sharepoint

    Posté par jtsables sur 19 février 2024 à 16h15

    Bonjour à tous,

    J’apprends à utiliser Power Automate et j’ai actuellement du mal avec ceci :
    Mon flux actuel consiste à créer ou à mettre à jour des éléments dans une liste Sharepoint par rapport à un fichier CSV. Si l’élément du fichier CSV existe déjà dans la liste sharepoint, alors “Mettre à jour”, s’il n’existe pas, alors “Créer”.

    Je voudrais insérer une autre condition sans altérer ce qui fonctionne déjà :

    Si un élément existe dans la liste Sharepoint mais ne figure pas dans le fichier CSV, alors “Mettre à jour”. Je sais que je dois ajouter l’ID de l’élément Sharepoint (probablement dans une variable de tableau) quelque part dans le flux et ajouter la condition à la fin du flux, mais j’ai essayé différentes manières et je n’ai pas réussi.

    Avez-vous des idées pour m’aiguiller?
    Merci beaucoup

    jtsables a répondu Il y a 6 mois, 1 semaine 2 Membres · 5 Réponses
  • 5 Réponses
  • David

    Membre
    19 février 2024 à 17h09

    Bonjour Jean-Tristan,

    Tu peux par exemple créer trois branches parallèles comme sur la capture ci-dessous

    Dans le premier à gauche j’ai utilisé une action de type “Message” avec la fonction intersection() pour obtenir les éléments en commun aux deux listes

    Dans le deuxième et le troisième j’ai utilisé une action de type “Filtrer un tableau” avec (en mode avancé) la formule not(contains(table_source, item()))

    • Dans l’un -> “De” est ta liste SharePoint et donc dans ta formule “table_source” est ton CSV
    • Dans l’autre -> “De” est ton CSV et donc ta formule “table_source est ta liste SharePoint

    A adapter selon tes besoins

  • jtsables

    Membre
    20 février 2024 à 8h39

    Bonjour David,

    Merci beaucoup pour la réponse, je vais la tenter en parallèle.

    Mon but est de garder lancien flux et d’adapter ma nouvelle condition dessus.

    Pour donner plus de détails, si l’élément n’est plus présent dans le CSV, cela signifie que le projet est fermé. Je peux donc mettre à jour avec une valeur définie.

    La condition déjà mise dans le flux est : If length(outputs(‘Get_items’)?[‘body/value’]) = 0

    Si oui, cela signifie qu’il s’agit d’un nouvel élément (donc créer), si non, l’élément existe déjà, donc je le mets à jour.

    En plus du flux dans mon premier message j’ajoute juste

    1. Une variable de type array avant le premier apply to each,

    2. Un Append to array variable avec la valeur actuelle de l’apply to each rows

    3. Une nouvelle condition en fin de flux

    Merci d’avance

  • David

    Membre
    20 février 2024 à 19h32

    Bonjour jtsables

    A mon avis, tu devrais revoir ton flux pour l’optimiser. Ton déclencheur est déconseillé. Tu devrais plutôt utiliser “Quand un fichier est créé (propriétés uniquement)” et ajouter dans les paramètres une condition de déclenchement

    Ce qui t’évitera le premier bloc de condition après le déclencheur.

    Ensuite tu devras utiliser une autre action pour obtenir les données du fichier, puis comparer les valeurs du fichier avec ta liste SharePoint. Tu n’es pas obligé de faire trois branches comme je l’ai présenté mais les formules proposées me semblent répondre à tes besoins, et me semblent plus optimisées que tes itérations et conditions encastrées. Mais je peux me tromper.

  • jtsables

    Membre
    22 février 2024 à 8h41

    Bonjour David,

    Désolé pour la réponse tardive (cela me prend encore beaucoup de temps pour modifier les flux et revenir ici).

    Merci pour tes réponses et effectivement ta solution est bien plus adaptée (elle est également bien plus jolie a regarder).

    Je n’ai pas encore fini de mettre en place ta solution, ça va me prendre encore quelques temps 🙂

    Merci beaucoup

    Bonne journée

  • jtsables

    Membre
    29 février 2024 à 9h29

    Bonjour David,

    Effectivement le flux est bien mieux comme cela et surtout il y a moins de risque d’erreur lorsqu’on le modifie.

    Merci énormément!

    Jean-Tristan

Connectez-vous pour répondre.