Automatiser les actions post création de vos sites

site-design-information-panel-applied-site-designs

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 :

Choix d'un site design

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.

Un Site Design est en cours d'application

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 ! 😉

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.