Dans un article précédent ‘Cahier de communications dans Teams‘, j’avais mis en place une liste via Microsoft List. L’article proposait de créer une liste avec de nombreuses personnalisations, tant en termes de colonnes que d’adaptations visuelles sur la vue de ma liste et les formulaires de ma liste. Reproduire une telle liste manuellement peut devenir fastidieux, et si dans les manipulations proposées une erreur est faite, c’est tout le fonctionnement de celle-ci qui peut être remis en cause.
Heureusement la reproduction de cette liste ne doit pas se faire obligatoirement de manière manuelle. En effet, votre plateforme SharePoint Online propose la possibilité de mettre en place des modèles de listes, disponibles à l’organisation, donc disponibles à tout utilisateur qui souhaite reproduire une telle liste.
Ces modèles de listes, d’organisation, sont donc disponibles dans Microsoft Teams, Microsoft Lists et SharePoint Online Microsoft propose des modèles, mais vous pouvez donc définir vos propres modèles.
Pour définir un modèle de liste, nous avons besoins de deux éléments.
Un modèle : Celui-ci définit l’aspect de la liste, son nom, les couleurs, l’icone et une image illustrative
Un script : Celui-ci définit la structure et les configurations de la liste (colonnes, vues, adaptations, options, paramètres,…)
Le script, un fichier JSON, est le coeur de notre modèle. Il existe principalement deux manières de construire ce fichier. Soit on le construit manuellement, et dans ce cas, il vous faudra de solides compétences techniques et une bonne documentation. Soit on utilise une liste existante pour en extraire son script. Et clairement, c’est cette approche que nous adopter.
Pour la suite des opérations, voici mes prérequis
Etre administrateur de votre plateforme M365 (au minimum Administrateur SharePoint)
Avoir Visual Studio Code sur votre poste de travail
Visual Studio Code
Tout ce dont vous avez besoin pour créer d’excellentes applications. Gratuitement. Logiciels et services gratuits pour les développeurs – Visual Studio (microsoft.com)
Je vous invite à télécharger et installer ‘Visual Studio Code’ pour réaliser la suite des opérations décrites dans cet article
Pour exécuter le code qui sera fournit ci-dessous, nous devons compléter notre environnement de développement avec un module ‘extension’. – L’extension PnP PowerShell
Lorsque l’installation de ‘Visual Studio Code’ est terminée, je vous invite à l’exécuter
Si l’extension Pnp PowerSHell n’est pas installée, dans la zone de recherche : Pnp PowerShell Et cliquer sur ‘Install’
Pour chaque script proposé ci-dessous, voici les démarches à faire si vous voulez sauvegarder vos scripts sur votre poste de travail
Création d’un fichier texte sour Visual Studio Code
Une fois le fichier créé, nous allons le sauvegarder comme fichier de script PowerShell
Lui donner un petit nom représentatif par la même occasion.
Les couleurs et les icones disponibles pour votre modèle de liste.
Définir ces éléments n’a que peu d’importance, car lorsque un utilisateur va créer une nouvelle liste sur base de votre modèle, il pourra à son tour définir la couleur et l’icone de sa nouvelle liste.
Création d'un site SharePoint dédié à mes modèles de listes
A ce stade, je vous invite à créer une liste dans un espace SharePoint dédié à vos modèles de listes. Vous pouvez par exemple repartir de l’article ‘Cahier de communications dans Teams‘ et l’adapter pour créer la liste proposée dans le site SharePoint réservé à vos modèles de listes.
J’ai donc créé ma liste ‘JDC – Communications’ manuellement, cette liste va donc me servir pour créer mon modèle, que je vais rendre disponible à toute mon organisation.
Je vais faire quelques tests, et prendre une capture d’écran qui permettra d’illustrer mon modèle. Cette capture d’écran je vais la transférer dans la librairie ‘Documents’ de mon site SharePoint qui me sert pour mes modèles de listes.
Pour obtenir l’adresse de mon image d’illustration
Création d'un modèle sur base d'une liste existante
Voilà je suis maintenant prêt pour créer mon modèle de liste pour le rendre disponible à mon organisation.
Script sous Visual Code, script qu’il faut exécuter
Le script en détails
#Paramètres
$templateName = "JDC - Communications" #Nom du nouveau modèle de liste
$templateDescription = "Liste pour les communications des classes Teams" #Description du nouveau modèle de liste
#Adresse de l'image pour l'illustration du modèle
$templateThumbnail = "https://xxxxxxxxx.sharepoint.com/sites/ListTemplates/Documents%20partages/JDC-Communication-Thumbnail.png"
#Adresse de la liste servant de source pour le nouveau modèle de liste
$listURL = "https://xxxxxxxxx.sharepoint.com/sites/ListTemplates/Lists/JDC%20%20Communications"
#Adresse du site d'administration de votre SharePoint
$adminUrl = "https://xxxxxxxxx-admin.sharepoint.com/"
#Connection à l'espace d'administration de votre SharePoint Online
Connect-PnPOnline -url $adminUrl -Interactive
#Extraction du script (JSON) de la liste existante
$listTemplate = Get-PnPSiteScriptFromList -Url $listURL
#Enregistrement du script dans les modèles de scripts de votre SharePoint Online
$siteScript = Add-PnPSiteScript -Title $templateName -Description "Script : $templateDescription" -Content $listTemplate
#Récupération de l'identifiant du script
$scriptId = $siteScript.Id
#Création d'un nouveau modèle de liste basé sur le script enregistré
Add-PnPListDesign -Title $templateName -Description $templateDescription -SiteScriptIds $scriptId -Thumbnail $templateThumbnail
Vérifions depuis Microsoft Lists, si mon modèle est disponible !
Correctif
J’utilise mon modèle pour créer dans Microsoft Lists, une nouvelle liste ‘JDC – Communications – SG1B’ sur base de mon modèle Après vérification, tout semble fonctionner normalement. Mais il y a un petit problème avec le champ ‘Titre’ de ma liste.
Dans ma liste de départ j’avais adapté le visuel de ce champ via la formule =if([$Author.email] == @me || [$Author] == », ‘true’, ‘false’)
Et le champ titre de ma nouvelle liste n’a pas cette adaptation.
Il va donc falloir l’appliquer manuellement. Cette adaptation est la seule que je doives faire manuellement, car le champ ‘Titre’ d’une liste est un champ système toujours créé par défaut par SharePoint, quelque soit le modèle de liste utilisé.
Compléments
Obtenir la liste des scripts (JSON) de votre plateforme
On peut voir que mon modèle de liste ‘JDC – Communications’ est lié à mon script ‘JDC – Communications’ via l’attribut SiteScriptIds Je vous invite toujours à utiliser le même nom ‘Title’ pour le modèle et le script associé, c’est plus simple de s’y retrouver
#Adresse de la liste servant de source pour la mise à jour d'un script modèle de liste
$listURL = "https://xxxxxxxxx.sharepoint.com/sites/ListTemplates/Lists/JDC%20%20Communications"
$adminUrl = "https://xxxxxxxxx-admin.sharepoint.com/"
Clear-Host
Connect-PnPOnline -url $adminUrl -Interactive
$listTemplate = Get-PnPSiteScriptFromList -Url $listURL
Set-PnPSiteScript -Identity b76ed6ba-41fe-4f73-b616-afdacaf27c0a -Content $listTemplate
Mettre à jour un modèle de liste
Dans ce cas, malheureusement, vous n’avez pas la possibilité de mettre à jour. Il va falloir supprimer et recommencer
Conclusions
La création de modèle de liste est un outil très intéressant et puissant, pour reproduire des listes, ayant la même structure et configuration, à volonté. Il faudra bien penser et finaliser les listes que l’on veut rendre disponible à tout utilisateur de l’organisation. Si une liste est rendue disponible dans les modèles, et que vous devez modifier ou adapter le modèle, il faut tenir en tête que ce principe de modèle est comparable aux modèles Word. Vous pouvez évidemment mettre à jour un modèle Word mais tous les documents déjà créés sur base d’une ancienne version d’un modèle ne seront pas impactés par votre adaptation. Pour les listes c’est identique. Si vous adapter un modèle de liste, toutes les listes existantes, créées sur base du modèle, ne seront pas mises à jour. Outil puissant mais qui demande beaucoup de rigeur.