Note : Cette personnalisation n’est disponible que pour SharePoint Online pour le moment
Lorsque quelqu’un crée un site dans SharePoint Online, vous pouvez lui donner la possibilité de choisir un modèle personnalisé dans le menu de création de site.

Les modèles que vous voyez dans l’image ci-dessus sont disponibles par défaut pour la création de sites de communication.
Si vous n’êtes pas familier avec les sites de Communication et d’Équipes pour SharePoint Online, je vous recommande de lire cet article où nous abordons le sujet.
Pour vous donner un peu de vocabulaire, ces modèles sont appelés Site Design. Vous pouvez créer jusqu’à 100 Site Design par tenant Office 365.
Un Site Design est en fait un conteneur, l’action de post-création est contenue dans les Site Scripts. Vous pouvez créer jusqu’à 100 Site Scripts.
Ainsi, lorsque vous voulez créer un nouveau modèle pour vos sites, vous devez d’abord créer un ou plusieurs Site Script et un Site Design en appliquant ces Site Scripts. C’est assez pratique car vous pourriez vouloir appliquer des actions communes (Site Script) dans vos Templates (Site Design).
Jusqu’à présent, voici les actions disponibles pour les Site Scripts et Site Design :
-Créer une nouvelle liste ou bibliothèque (ou modifier la liste par défaut créée avec le site)
-Création des colonnes du site, des types de contenu et configuration des autres paramètres de la liste
Définir les propriétés de l’image de marque du site comme la disposition de navigation, la disposition de l’en-tête et l’arrière-plan de l’en-tête
-Appliquer un thème
-Définir le logo d’un site
-Ajout de liens vers le lancement rapide ou la navigation en hub
-Déclenchement d’un Microsoft Flow
-Installation d’une solution déployée à partir de l’application catalogue
-Définir les paramètres régionaux pour le site
-Ajout de principals (utilisateurs et groupes) aux rôles SharePoint
-Définir la capacité de partage externe pour le site
Je voudrais mettre l’accent sur « Déclencher un Microsoft flow ».
En fait, cette action vous permet de faire ce que vous voulez, car vous pouvez lancer un flux quand un site est créé avec votre Site Design. Ce flux peut alors exécuter une Azure Function qui vous donne accès à un grand nombre d’actions 🙂
J’ai trouvé cette référence assez utile si vous allez dans cette direction.
Comment écrire vos actions de création de site ?
Un Site Script est écrit en Json, suivant ce pattern :
{ "$schema": "schema.json", "actions": [ ...... ], "bindata": { }, "version": 1 };
Vous pouvez trouver le schéma de référence Json ici
Un exemple étant plus facile à comprendre, écrivons un Site Script où nous voulons créer une liste avec des colonnes et définir le partage externe.
Il ressemblera à ceci :
{ "$schema": "schema.json", "actions": [ { "verb": "createSPList", "listName": "My list", "templateType": 100, "subactions": [ { "verb": "SetDescription", "description": "My super list" }, { "verb": "addSPField", "fieldType": "Text", "displayName": "Customer Name", "isRequired": false, "addToDefaultView": true }, { "verb": "addSPField", "fieldType": "Number", "displayName": "Requisition Total", "addToDefaultView": true, "isRequired": true }, { "verb": "addSPField", "fieldType": "User", "displayName": "Contact", "addToDefaultView": true, "isRequired": true }, { "verb": "addSPField", "fieldType": "Note", "displayName": "Meeting Notes", "isRequired": false } ] }, { "verb": "joinHubSite", "hubSiteId": "339f4869-d7a5-4e3b-99ac-93f912a75798" }, { "verb": "setSiteExternalSharingCapability", "capability": "ExistingExternalUserSharingOnly" } ], "bindata": { }, "version": 1 }
Dans ce code Json, nous pouvons voir que nous créons une première action pour Créer la liste (CreateSPList, avec le nom « My List » et le baseTemplate « 100 » pour une liste personnalisée SharePoint). Ensuite, nous définissons des sous-actions pour cette liste afin de définir la description (SetDescription) et créer 3 colonnes (addSPField) en leur donnant un nom, un type et quelques propriétés supplémentaires.
Ensuite, nous demandons au site de rejoindre un HubSite (joinHubSite). Vous pouvez lire cet article pour plus d’informations à ce sujet.
Enfin, nous avons défini la stratégie de partage externe sur « ExistingExternalUserSharingOnly » (setSiteExternalSharingCapability).
Comment déployer dans votre environnement ?
Nous allons déployer ce script de site en utilisant PowerShell et le module Microsoft.Online.SharePoint.PowerShell :
#Connecting to SharePoint Connect-SPOService -Url "https://btcstech-admin.sharepoint.com" #Creating the Site Script Content $siteScriptContent = ' { "$schema": "schema.json", "actions": [ { "verb": "createSPList", "listName": "My list", "templateType": 100, "subactions": [ { "verb": "SetDescription", "description": "My super list" }, { "verb": "addSPField", "fieldType": "Text", "displayName": "Customer Name", "isRequired": false, "addToDefaultView": true }, { "verb": "addSPField", "fieldType": "Number", "displayName": "Requisition Total", "addToDefaultView": true, "isRequired": true }, { "verb": "addSPField", "fieldType": "User", "displayName": "Contact", "addToDefaultView": true, "isRequired": true }, { "verb": "addSPField", "fieldType": "Note", "displayName": "Meeting Notes", "isRequired": false } ] }, { "verb": "joinHubSite", "hubSiteId": "339f4869-d7a5-4e3b-99ac-93f912a75798" }, { "verb": "setSiteExternalSharingCapability", "capability": "ExistingExternalUserSharingOnly" } ], "bindata": { }, "version": 1 } ' #Creating the Site Script $siteScript = Add-SPOSiteScript -Title "Demo" -Content $siteScriptContent
Maintenant que notre Site Script est disponible, nous allons créer un Site Design pour permettre aux utilisateurs de le choisir dans le menu Créer Site :
#Retrieving the preview picture to be displayed $previewUrl = "https://btcstech.sharepoint.com/sites/NewHubsite/Shared%20Documents/hubSite preview.png" #Creating the Site Dcript (WebBaseTemplate 64 for Team Site and 68 for Communication Site Add-SPOSiteDesign -Title "Demo Site Design" -WebTemplate "64" -SiteScripts $siteScript.Id -Description "Demo showing list creation and external sharing" -PreviewImageUrl $previewUrl -PreviewImageAltText "site preview"
Désormais, toute personne autorisée à créer un site dans l’entreprise pourra choisir ce Site Design dans le menu de création de site :

Ne pas oublier que ces actions sont des actions post-création. Cela signifie que le site sera créé et disponible avant que ces actions ne soient déclenchées. L’utilisateur verra un message lui indiquant que des actions sont en cours d’exécution s’il se connecte directement au site. Il pourra également suivre l’avancement et être informé s’il y a un problème sur les actions.

J’aimerais terminer cet article en parlant de trois points intéressants :
Tout d’abord, il y a le fait qu’il est possible d’étendre la portée de chacun de ces Site Design. Cela signifie que vous pouvez contrôler quelle population pourra les utiliser. Vous pouvez effectuer le scoping avec le CmdLet suivante :
Grant-SPOSiteDesignRights -Identity db752673-18fd-44db-865a-aa3e0b28698e -Principals ("accounting@contoso.sharepoint.com") -Rights View
Le second point est que vous pouvez parcourir les exemples de Site Script dans la ressource communautaire sur git hub
Et le dernier point, encore expérimental, est que vous pouvez extraire un Site Script depuis un site existant, c’est clairement génial 🙂
Vous pouvez regarder cette courte vidéo pour voir comment ça fonctionne :
J’espère que vous avez eu autant d’intérêt à lire cet article que moi à l’écrire.
A bientôt sur le blog ! 😉