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
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.
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”.
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 site | Sélectionnez l'adresse du Site SP |
| Méthode | Sélectionnez POST |
| Uri | _api/web/lists/getByTitle('Candidats')/items(ID)/validateUpdateListItem() |
| Headers | |
| content-type | application/json;odata=verbose |
| accept | application/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.