Benachrichtigungen für SharePoint-Listen einrichten und ein neues PnP Cmdlet
In neuen SharePoint-Räumen Benachrichtigungen automatisch aktivieren? Hier helfen uns PowerShell, CSOM und ein neues Cmdlet weiter.
Eine häufige Anforderung in meinen Office 365-Projekten ist die Bereitstellung von Vorlagen. Das können SharePoint-Sites sein, die als Projekt- oder Teamraum zum Einsatz kommen. Das können aber auch Teams sein, die mit vorkonfigurierten Channels und Tabs erstellt werden. Wir nutzen hierbei intensiv das dafür von Microsoft vorgesehene PnP Provisioning Framework.
Kürzlich gab es im Projekt die Anforderung, in neu angelegten SharePoint-Räumen Benachrichtigungen zu aktivieren. Bestimmte Nutzer sollten über neu hochgeladene Dokumente per E-Mail informiert werden; eine Standardfunktion von SharePoint. Solche Benachrichtigungen können wir aber leider noch nicht mittels PnP aktivieren. Aber hier helfen uns PowerShell, CSOM und vielleicht bald ein neues Cmdlet weiter. Die Details gibt es im Beitrag.
Benachrichtigungen für Listen einrichten
Die Benachrichtigungsfunktion ist ein SharePoint-Feature, das schon seit Ewigkeiten zur Verfügung steht. Sie ist in SharePoint Online weiterhin verfügbar und kann genutzt werden, um über Änderungen in Listen und Dokumentenbibliotheken auf dem neuesten Stand zu bleiben:
Im Detail lassen sich die Art der Änderung, das Intervall der Benachrichtigung, der Zeitpunkt etc. konfigurieren:
Als Besitzer der SharePoint-Site ist es außerdem möglich, Benachrichtigungen für andere Nutzer einzurichten. Dabei wird technisch eine Kopie der Benachrichtigung für die entsprechenden Nutzer angelegt. Die Nutzer könnten anschließend im Browser die Benachrichtigung bearbeiten und auch wieder entfernen.
Wie lassen sich nun solche Benachrichtungen automatisch anlegen?
Benachrichtigungen per PowerShell anlegen
Leider gibt es noch kein PnP PowerShell Cmdlet für die Erzeugung von Benachrichtigungen (engl. Alert). Daher muss aktuell das Client Site Object Model (CSOM) zum Einsatz kommen. Eine zentrale Klasse dabei ist AlertCreationInformation.
Der benötigte Code sieht ungefähr so aus:
Connect-PnPOnline "https://<tenant>.sharepoint.com/sites/Alert-Test"
$ctx = Get-PnpContext
$newAlert = New-Object Microsoft.SharePoint.Client.AlertCreationInformation;
$newAlert.List = $ctx.Web.DefaultDocumentLibrary();
$currentUser.Alerts.Add($newAlert);
$currentUser.Update();
$ctx.ExecuteQuery();
(Die PnP-Cmdlets Connect-PnPOnline und Get-PnPContext stehen nach Installation des entsprechenden PowerShell-Moduls zur Verfügung.)
Nun wäre es schön, auch für die Erstellung einer Benachrichtigung ein Cmdlet zur Verfügung zu haben. Ich habe dafür einfach mal ein Ticket auf Github geöffnet und mir das Cmdlet gewünscht. Und als Feedback kam das freundliche Angebot, doch selber was zu implementieren.
Also los.
Ein neues Cmdlet: Add-PnPAlert
Die Erstellung eines neuen PnP Cmdlets ist erstaunlich einfach. Und das PnP PowerShell-Projekt ermöglicht der SharePoint-Community, sich an der Evolution von PnP PowerShell zu beteiligen. Die Anleitung dazu findet sich auf Github.
Das Vorgehen sieht grob wie folgt aus:
- 2 Repositories klonen
- Visual Studio starten
- Projekte bauen
- PowerShell ISE starten
Und schon kann das Cmdlet getestet werden. Auch das Debugging per Visual Studio, inkl. Setzen von Breakpoints und Inspektion von Variablenwerten ist problemlos möglich.
Dank Innovations- und Lernzeit, die wir bei Communardo zur Verfügung haben, konnte ich das Thema sauber zum Ende führen und tatsächlich ein neues Cmdlet implementieren: Add-PnPAlert. Inklusive Unit Tests, die das etwas unintuitive Verhalten der Alert-Schnittstelle sichtbar macht und absichert. Weiterhin kapselt das Cmdlet genau diese Interna weg und erlaubt es in Zukunft, hoffentlich schmerzfrei, Benachrichtigungen per PnP PowerShell zu erstellen. Sofern der Pull Request akzeptiert wird.
So oder so steht uns das Cmdlet Add-PnPAlert im nächsten Projekt zur Verfügung und macht uns das Leben ein Stück einfacher.
Sie haben Fragen oder möchten sich von uns beraten lassen?
Gerne steht unsere Expertin für Ihre Fragen zur Verfügung.
Nutzen Sie einfach unser Kontaktformular.
Ihre Ansprechpartnerin
Sabine KleinCustomer Success Managerin
- Ungargasse 37, 1030 Wien
- Tel.: +43 139 505 045
- anfrage@communardo.de