Utiliser une liste SharePoint, ou directement Microsoft Lists, est un moyen simple pour stocker de l'information. Par exemple, on peut l'utiliser pour stocker des référentiels (marques, villes, statuts, services, produits, etc.) ou des listes d'éléments (tâches, activités, courses, idées, etc.).
Il peut arriver qu'on veuille effectuer un traitement spécifiquement sur une ligne d'une liste SharePoint. Power Automate est ainsi l'outil idéal au sein de Microsoft 365.
Quel traitement appliquer sur une ligne ? Dans des précédents projets, j'avais eu différents besoins, notamment :
Depuis l'interface de la liste SharePoint, le bouton Automatiser , accessible à la fois dans le ruban en tête de liste ou dans le menu contextuel d'un élément permet de lister les flux Power Automate existants et associés à cette liste.
De manière native, il est même possible de créer directement un flux basique (appelés Règles dans cet écran) mais uniquement avec l'un des trois déclencheurs suivants :
👉 Qu'importe. On peut se rendre sur le portail de Power Automate, dans l'environnement par défaut, et créer un nouveau flux instantané . Au niveau du déclencheur, il suffit de choisir "Pour un élément sélectionné - SharePoint".
Dans le flux, une seule action SharePoint est donc nécessaire : Créer un élément .
Pour le titre, qui est la seule colonne de cette liste pour le moment, il suivi de renseigner le titre d'origine (de l'élément sélectionné) suivi, par exemple, de la mention - Copie.
🔐 Concernant l'autorisation d'exécution du flux par les utilisateurs, dans ce scénario, on peut appliquer les mêmes autorisations que la liste SharePoint. C'est à dire que les utilisateurs qui ont accès à la liste, ont aussi accès au flux.
Ce comportement peut être modifié, notamment pour changer les autorisations. Cela s'effectue depuis la page du flux : Utilisateurs avec autorisations d'exécution uniquement > Gérer les autorisations Exécution uniquement > Inviter une liste ou bibliothèques SharePoint
Retour dans la liste SharePoint depuis l'interface web. En sélectionnant un élément, le menu Automatiser affiche désormais le nouveau flux créé (ici appelé Dupliquer l'élément). En cliquant dessus, un panneau Power Automate s'ouvre sur le côté droit. A la première exécution, l'utilisateur doit confirmer l'utilisation d'une connexion à SharePoint.
En l'exécutant, le flux se lance et une nouvelle ligne apparait au bout de quelques secondes.
💡 Mais pourquoi avoir créé le flux dans l'environnement par défaut ? Cet article n'est pas un cours de gouvernance, mais, pour résumer, l'environnement par défaut est un environnement où tous les flux de tous les utilisateurs sont stockés en vrac.
Ce n'est pas une bonne pratique de l'utiliser. Il est plutôt conseillé d'utiliser des environnements dédiés avec un découpage par géographique (pour les groupes internationaux), par services ou directions (RH, marketing, ventes, etc.) ou par type (production, tests, développement). Il est bien sûr possible de croiser ces types de découpage, par exemple pour proposer l'environnement de test du service RH Europe, l'environnement de production du marketing Asie, etc.
👉 Retour dans le portail Power Automate, mais cette fois-ci en allant dans un environnement autre que celui par défaut : par exemple un environnement de développement. On peut recréer le même flux, avec le même déclencheur et sur la même liste. Pour faire "bien", on en profite aussi pour créer une solution et utiliser des variables d'environnement pour stocker l'URL du site et le nom de la liste.
🔐 Dernier point important : celui du partage et de l'autorisation d'exécution du flux par les utilisateurs. Dans le cadre d'un flux hébergé dans une solution et dans un environnement dédié, il faut partager ce flux à un ou plusieurs utilisateurs, ou mieux, à des groupes de sécurité (ou équipes Dataverse). Il n'est plus possible, contrairement à la première solution, de récupérer les autorisations de la liste SharePoint.
Cela s'effectue depuis la page du flux : Utilisateurs avec autorisations d'exécution uniquement > Gérer les autorisations Exécution uniquement > Inviter des équipes ou utilisateurs système
😏 Sans surprise, côté SharePoint, seul le premier flux est affiché. C'est-à-dire celui de l'environnement par défaut. Ce point est bien expliqué dans la documentation du connecteur :
Cependant, dans une autre page non traduite en français, la documentation est légèrement différente et apporte une nuance à cette limitation :
Pour aller plus loin, en analysant les échanges réseau sur la page de la liste, SharePoint récupère les flux associés à la liste, mais ne retourne que ceux de l'environnement par défaut :
_api/web/GetListUsingPath(DecodedUrl=@a1)/SyncFlowInstances
À ce stade, il y a trois problèmes souvent remontés par les clients :
Pour le premier point, il est facile de créer un bouton sur chaque ligne pour lancer un flux. Cela passer par du formattage JSON. La documentation est très complète à ce sujet, on peut donc facilement la mettre en place :
Pour cela, il faut créer une nouvelle colonne vide qui va accueillir le bouton, par exemple une colonne Action 1. En cliquant sur l'entête de la nouvelle colonne, puis Formatter la colonne, on peut injecter du code JSON issue de la documentation.
La seule information manquante pour lancer un flux est celle de l'identifiant du flux. On peut l'obtenir depuis la page Power Automate du flux en cliquant sur Exporter > Obtenir l'identificateur de flux.
Par cette méthode, l'identifiant intègrera également l'identifiant de l'environnement par défaut, par exemple :
v1/Default-aaa80bce-0f68-4c60-0000-c8b82a7e0758/108994ff-1234-44db-b299-8fb37c45f8bb
Il est aussi possible de ne mettre que la fin avec l'identifiant du flux pour les flux hors solution. On peut le retrouver dans l'adresse de la page de modification du flux. Dans ce cas, SharePoint considéra qu'il s'agit de l'environnement par défaut :
108994ff-1234-44db-b299-8fb37c45f8bb
Le JSON pour créer le bouton qui va appeler le flux est donc celui-ci (le coeur de la solution est dans le bloc customRowAction avec l'id du flux dans actionParams):
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "button",
"customRowAction": {
"action": "executeFlow",
"actionParams": "{\"id\": \"v1/Default-aaa80bce-0f68-4c60-0000-c8b82a7e0758/108994ff-1234-44db-b299-8fb37c45f8bb\"}"
},
"attributes": {
"class": "ms-fontColor-themePrimary ms-fontColor-themeDarker--hover"
},
"style": {
"border": "none",
"background-color": "transparent",
"cursor": "pointer"
},
"children": [
{
"elmType": "span",
"attributes": {
"iconName": "Flow"
},
"style": {
"padding-right": "6px"
}
},
{
"elmType": "span",
"txtContent": "Dupliquer"
}
]
}
L'affichage du bouton, le libellé, le style, l'icône, peuvent aussi être paramètres et dépendre du statut de la ligne.
"customRowAction": {
"action": "executeFlow",
"actionParams": "{\"id\": \"v1/Default-aaa80bce-0f68-4c60-0000-c8b82a7e0758/108994ff-5a15-44db-b299-8fb37c45f8bb\", \"headerText\": \"Titre Dupliquer la ligne\", \"runFlowButtonText\": \"Bouton Dupliquer la ligne\"}"
}
La bonne nouvelle est que l'astuce du bouton en JSON permet de lancer le flux de l'environnement dédié, qui n'est pas celui par défaut ! Car oui, le flux de l'environnement dédié, possède aussi un identifiant unique et cet identifiant peut être utilisé depuis l'interface de SharePoint. Toujours depuis le menu Exporter > Obtenir l'identificateur de flux, on obtient par exemple :
v1/2491dbb1-0000-e0ff-9fa8-64ab156cf0f9/d6949e71-1234-4cdc-ba3d-9fc40f1d00bb
Pour la démonstration, je crée une nouvelle colonne Action 2 dans la liste SharePoint afin d'avoir les deux comportements en parallèle. Bien sûr, cela n'a pas de sens en production. En cliquant sur mon nouveau bouton appelé ici Dupliquer DEV cela lance bien le flux de l'environnement dédié !
Bien que la documentation officielle indique que seuls les flux dans l'environnement par défaut sont compatibles avec le déclencheur "pour un élément sélectionné" (et également "pour un fichier sélectionné", l'équivalent pour une bibliothèque de documents), cela ne concerne en réalité que le bouton "Automatiser".
Reste un problème qui est souvent gênant pour les utilisateurs : l'affichage d'un panneau Power Automate sur la droite afin de valider l'exécution d'un flux. Si celui-ci est nécessaire quand il y a des paramètres d'entrée, quand on veut juste lancer un flux, cela fait perdre du temps.
Dans les grandes lignes, il faut :
@triggerOutputs()?['body/Dupliquer']
Dupliquer étant déjà un booléen, inutile de tester sa valeur avec true. Le code suivant est à proscrire, bien que fonctionnel :
@equals(triggerOutputs()?['body/Dupliquer'], true)
Cela évite que le flux ne se lance inutilement. Idéal pour ne pas consommer des quotas d'exécution. Il est aussi possible de "doubler" la vérification sur la valeur de la colonne Dupliquer dans une action à l'intérieur du flux pour ceux qui auraient peur de tomber dans une boucle inifinie. Mais cela n'est pas nécessaire et alourdit la lisibilité du flux.
Grâce à cette technique, on va pouvoir changer la valeur de la colonne Dupliquer sans ouvrir le formulaire (le coeur de la solution est dans le bloc customRowAction où on passe à "1" la valeur de la colonne Dupliquer) :
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "button",
"customRowAction": {
"action": "setValue",
"actionInput": {
"Dupliquer": "1"
}
},
"attributes": {
"class": "ms-fontColor-themePrimary ms-fontColor-themeDarker--hover"
},
"style": {
"border": "none",
"background-color": "transparent",
"cursor": "pointer"
},
"children": [
{
"elmType": "span",
"attributes": {
"iconName": "Flow"
},
"style": {
"padding-right": "6px"
}
},
{
"elmType": "span",
"txtContent": "Dupliquer la ligne"
}
]
}
Les flux avec le déclencheur "pour un élément sélectionné" ne s'affichent dans le menu Automatiser de SharePoint que s'ils sont dans l'environnement par défaut.
Pour faciliter le déclenchement du flux par les utilisateurs, un bouton sur chaque ligne peut être mis en place avec du JSON.
Ce bouton peut, via l'identificateur composé du flux et de son environnement, appeler un flux qui n'est pas dans l'environnement par défaut, mais dans n'importe quel autre environnement et dans une solution. Cela permet de garantir les bonnes pratiques sur la gestion des environnements Power Platform.
Utiliser une propriété Oui/Non avec un bouton qui change la valeur d'un simple clic permet de lancer un flux Power Automate "lorsqu'un élément est modifié" sans faire apparaître le panneau sur la droite de l'écran qui ralentit le parcours utilisateur.
#sharepoint #powerautomate #jsonformatting