Indhold
Opret et websted med Power Automate og SPSiteManager
Et kommunikationswebsted eller et teamwebsted uden gruppe fra et flow, med et tjek af om adressen er fri, som ikke kræver administratorrettigheder.
SharePoint-connectoren har ingen handling, der opretter et websted. REST-API’et _api/SPSiteManager kan oprette et kommunikationswebsted og et teamwebsted uden Microsoft 365-gruppe, og det kaldes med Send an HTTP request to SharePoint, som ikke kræver Premium. Et teamwebsted med gruppe oprettes gennem gruppen i Graph og står ikke her.
Findes adressen allerede?#
Min metode, som ikke kræver administratorrettigheder: en Get lists mod den nye adresse, med Configure run after sat til også at køre videre, når den fejler. Derefter en Switch på statuskoden, outputs('Get_lists')?['statusCode']:
| Statuskode | Betyder |
|---|---|
| 404 | Webstedet findes ikke. Adressen er fri |
| 403 | Webstedet findes, men forbindelsens konto har ikke adgang |
| 200 (Default) | Webstedet findes, og kontoen har adgang |
Hver gren sætter en boolesk variabel, varSiteExists. Ideen er fra en opskrift i Power Automate Cookbook på Power Users-forummet.

SPSiteManager har også et statuskald:
Method: GET
Uri: _api/SPSiteManager/status?url='https%3A%2F%2F<tenant>.sharepoint.com%2Fsites%2F<websted>'
Headers:
{
"Accept": "application/json;odata.metadata=none",
"odata-version": "4.0"
}
Adressen i url er URL-kodet. SiteStatus i svaret:
| Værdi | Betyder |
|---|---|
| 0 | Findes ikke |
| 1 | Oprettes lige nu |
| 2 | Klar |
| 3 | Fejl under oprettelsen |
| 4 | Adressen er allerede i brug |
Microsofts side siger ikke, hvilke rettigheder statuskaldet kræver. I 2023 skulle adressen tjekkes uden administratorrettigheder, og derfor blev det Get lists.
Opret webstedet#
Site Address: https://<tenant>.sharepoint.com
Method: POST
Uri: _api/SPSiteManager/create
Headers:
{
"Accept": "application/json;odata.metadata=none",
"odata-version": "4.0"
}
Body:
{
"request": {
"Title": "@{triggerOutputs()?['body/Title']}",
"Url": "@{variables('varSiteURL')}",
"Lcid": 1030,
"ShareByEmailEnabled": false,
"Description": "",
"WebTemplate": "SITEPAGEPUBLISHING#0",
"SiteDesignId": "f6cc5403-0d63-442e-96c0-285923709ffc",
"Owner": "<ejerens e-mail>"
}
}
I mit flow er Site Address roden af tenanten. Mange eksempler bruger administrationsadressen, https://<tenant>-admin.sharepoint.com.
Felterne:
| Felt | Indhold |
|---|---|
Title | Webstedets navn |
Url | Den fulde adresse, https://<tenant>.sharepoint.com/sites/<websted> |
Lcid | Sproget: 1030 dansk, 1033 engelsk. Webstedets sprog kan ikke ændres bagefter |
ShareByEmailEnabled | Deling via e-mail. Microsofts side beskriver ikke feltet nærmere |
WebTemplate | SITEPAGEPUBLISHING#0 for kommunikationswebsted, STS#3 for teamwebsted uden gruppe |
SiteDesignId | Microsofts egne designs: 96c933ac-3698-44c7-9f4a-5fd17d71af9e (Topic, eller null), 6142d2a0-63a5-4ba0-aede-d9fefca2c767 (Showcase), f6cc5403-0d63-442e-96c0-285923709ffc (Blank) |
WebTemplateExtensionId | Et eget site design. Så skal SiteDesignId være 00000000-0000-0000-0000-000000000000 |
SensitivityLabel | Id’et på en følsomhedsmærkat. Classification viser kun en tekst og sætter ingen mærkat |
Owner | Ejeren. Krævet, når kaldet sker som app. Ellers bliver den, der kalder, ejer |
Et eget site designs id står i Get-SPOSiteDesign eller Get-PnPSiteDesign, og en mærkats id i Get-Label efter Connect-IPPSSession.
Svaret#
1{
2 "SiteId": "<site-id>",
3 "SiteStatus": 2,
4 "SiteUrl": "https://<tenant>.sharepoint.com/sites/<websted>"
5}
Med SiteStatus 2 er webstedet klar, og flowet kan fortsætte uden en forsinkelse. Er det 1, kan en Do until spørge statuskaldet, indtil det er 2 eller 3.
Til en hub#
På det nye websted, bagefter:
Site Address: https://<tenant>.sharepoint.com/sites/<websted>
Method: POST
Uri: _api/site/JoinHubSite('<hub-id>')
Svaret er 204. Hub’ens id står i Get-PnPHubSite som SiteId. Er hub’en sat op, så kun bestemte personer må tilknytte websteder, skal forbindelsens konto være en af dem.
Faldgruber#
- Adressen. Holdes til a-z, tal og bindestreg, uden mellemrum.
replace(toLower(…), ' ', '-')klarer mellemrummene, men ikke æ, ø og å. - Slettede websteder. En adresse, der tilhører et slettet websted i papirkurven, er ikke fri. Den frigives, når webstedet slettes helt (
Remove-SPODeletedSite). - Sproget vælges ved oprettelsen og kan ikke ændres.
- Ejeren skal være en bruger i tenanten.
- Grupper. Et teamwebsted med Microsoft 365-gruppe kan ikke oprettes her.