← Tous les articles

Ajouter ou mettre à jour une colonne Image dans une liste SharePoint avec Power Automate

Nous avons vu dans un précédent article, comment récupérer le contenu d’une colonne de type “image”. Dans cet épisode, je nous allons voir comment uploader du contenu dans ce même type de colonne.

Cet article est inspiré de celui de Reshmee Auckloo, dont j’ai ajouté quelques légères optimisations. Je vous invite à découvrir son blog ici

  1. Prérequis & contexte
  2. Le flux
    1. Déclencheur
    2. Obtenir les éléments
    3. Récupérer le contenu du fichier pour chaque élément
    4. Optimisation de la boucle
    5. Récupération de l’extension de fichier
    6. Création du fichier
    7. Association du fichier au champ de type Image
  3. C’est terminé !

Prérequis & contexte

Dans cet exemple, nous disposerons d’une liste intitulée “Candidats”, dans laquelle nous avons une colonne “avatar”. Ce champ contient l’URL d’une image que nous souhaitons uploader dans une colonne de type image, nommée “Photo” via notre flux.

Nous aurons besoin :

  • de l’adresse du site SharePoint

  • du nom de la liste : (ex : Candidats ) (remplacer les éventuels espaces par %20 )

  • du nom technique de la colonne image (ex : Photo)

  • de l’ ID de l’enregistrement dont il faut récupérer le contenu du fichier, dans mon exemple, je récupérerai l’ ID dans une action Sharepoint “Obtenir les éléments”

  • Dans ce flux Nous utiliserons une action de requête HTTP avec une action 💠premium, mais rien ne vous empêche d’utiliser ce tuto si vous pouvez récupérer le contenu du fichier avec une action 🔶standard (Pièce jointe de mail, fichier sur Onedrive ou SP… )

Le flux

Déclencheur

Pour ce besoin nous souhaitons déclencher manuellement mon flux sur une plage d’éléments, nous ajouterons donc deux entrées de type “nombre” à notre déclencheur manuel : ID from et ID to, qui vont déterminer la plage d’éléments que nous souhaitons mettre à jour.

Il est bien entendu tout à faire possible d’avoir un autre type de déclencheur: Planifié ou automatique, par exemple quand un élément est ajouté.

Obtenir les éléments

Nous récupérons les éléments de la liste SharePoint “Candidats”, Pour ne récupérer que les lignes dans ma plage d’ ID , nous utiliserons un filtre OData.

Texte
ID ge [ID from] and ID le [ID to]

⚠️ Contrairement à ce qui est indiqué dans le champ “Top Count” / “Jusqu’au nombre d’éléments”, si ce dernier est vide il y aura une limitation à 100 éléments, il peut être nécessaire de mettre une valeur un peu plus confortable. (ex 1000).

Récupérer le contenu du fichier pour chaque élément

Nous allons ajouter une action HTTP (1], qui va nous permettre de récupérer le contenu d’une image via son URI dont nous disposons dans la colonne “avatar“(2).

Étant donné que nous appelons un champ issu d’une liste d’éléments (2) obtenus à l’étape précédente, Power Automate va encapsuler notre action HTTP dans une boucle “For Each” / “Appliquer à chacun“(3).

Optimisation de la boucle

Afin d’optimiser le temps d’exécution du flux, nous activerons le parallélisme(2) dans la boucle “For each”, ce qui permettra d’exécuter plusieurs instances (3) de cette boucle en même temps.

Récupération de l’extension de fichier

A l’étape suivante nous devrons fournir un nom de fichier avec son extension, nous allons donc récupérer cette extension dans la sortie de requête HTTP avec un message. Nous utiliserons les fonctions last() et split() pour isoler la valeur recherchée dans le champ “$content-type”.

Texte
last(split(outputs('HTTP')?['Body/$content-type'],'/'))

Création du fichier

Nous devrons ajouter une action “Créer un fichier” dans laquelle nous fournirons en paramètres :

  • (1) L’adresse du site

  • (2) Pour le chemin d’accès, nous naviguerons dans le dossier “Lists” où nous sélectionnerons notre liste “Candidats”

  • Nous composerons le nom du fichier avec le nom de l’enregistrement (3) de la liste et l’extension du fichier (4) récupérée à l’étape précédente, sans oublier le “.” entre les deux !

  • Enfin dans le champ “contenu du fichier”, nous placerons la sortie de l’action HTTP

⚠️ Dans les paramètres(1) de l’action “Créer un fichier”, nous désactiverons l’option “Autoriser le chunking“(2), sans quoi l’action se soldera par un échec si le fichier existe déjà.

Association du fichier au champ de type Image

Il ne nous reste plus qu’a associer le fichier nouvellement créé à la colonne “Photo” qui est de type image. Il n’y a malheureusement pas d’action SharePoint toute prête pour cette opération, nous utiliserons donc un  Envoi de requête HTTP à SharePoint pour réaliser celle-ci.

Voici les paramètres à utiliser :

Adresse du siteSélectionnez l'adresse du Site SP
MéthodeSélectionnez POST
Uri_api/web/lists/getByTitle('Candidats')/items(ID)/validateUpdateListItem()
Headers
content-typeapplication/json;odata=verbose
acceptapplication/json;odata=verbose
Body{"formValues":[{"FieldName":"Photo","FieldValue":"{\"type\":\"thumbnail\",\"fileName\":\"[Body/Name du fichier créé]\",\"fieldName\":\"Photo\",\"serverUrl\":\"[URL de votre site sharepoint]\",\"serverRelativeUrl\":\"/sites/[NomDeLaListe][Body/path du fichier créé]\"}","HasException":false,"ErrorMessage":null}],"bNewDocumentUpdate":false,"checkInComment":null}

C’est terminé !

Votre flux devrait ressembler à ceci :

Quand vous le lancerez, vous serez invité à fournir une plage d’ID:

Échanger autour de cet article

Les commentaires utilisent Giscus et GitHub Discussions. Le service externe n’est contacté qu’après activation.