Jeżeli pracujecie z jakąkolwiek wersją SharePoint, nie ważne czy to on premise czy to w chmurze, możecie być zaskoczeni gdy będziecie chcieli zrobić powiadomienia z kalendarza SharePoint. Mam na myśli to, że o ile synchronizacja Outlooka z kalendarzem to operacja do zrobienia za pomocą jednego kliknięcia, to już powiadomień o zbliżającym się końcu wydarzenia nie da się w ten sposób zrobić. Kilka dni temu klient zaskoczył mnie żądaniem, że chce taką funkcjonalność. Ok, więc sprawdźmy co da się zrobić.
Powiadomienia z kalendarza SharePoint
Załóżmy, że potrzebujemy dwóch powiadomień. Jedno, że do końca zdarzenia, zostało 24 godziny oraz drugie, że została tylko jedna godzina. Najprostszą opcją będzie na początek stworzenie dwóch kolumn, w których będziemy przechowywać czas kiedy mają być uruchomione nasze powiadomienia.
Stwórzmy więc takie dwie kolumny. Jedna z nich będzie przechowywała czas dwadzieścia cztery godziny do końca wydarzenia: „24HoursBeforeEvent” . Jako typ przechowywanych danych wybieramy wartość wyliczaną z formułą =[End Time]-1 i wartością zawracaną typu data/czas. Wartość [End Time] to czas kiedy nasze wydarzenie się zakończy.
Druga kolumna będzie przechowywała dane określające czas jednej godziny do końca zdarzenia – „1HourBeforeEvent”. Podobnie jak poprzednio korzystamy z typu kolumny wyliczanej, z następującą formułą : [End Time]-(1/24/60*60) . Teraz pozostaje nam stworzenie prostego workflow, który będzie miał za zadanie wysyłanie powiadomień. Poniżej zrzut ekranu z mojego workflow.
Co robi nasz workflow? W pierwszym kroku jest wysyłane powiadomienie o nowym zdarzeniu. Następnie sprawdzamy czy koniec zdarzenia nie będzie miał miejsca wcześniej niż 24 godziny. W takim przypadku od razu przechodzimy do kolejnego kroku. Jeżeli nic takiego nie ma miejsca workflow jest usypiany, aż do 24 godzin przed końcem zdarzenia. Workflow odczytuje sobie tę wartość z naszej kolumny „24HoursBeforeEvent”. Po wysłaniu powiadomienia znowu przechodzi w czas oczekiwania i budzi się na godzinę przed końcem zdarzenia. Znowu w tym przypadku wartość jest brana z naszej kolumny wyliczanej „1HourBeforeEvent”. Jak widzicie cała operacja była prosta i szybka, a działa zarówno w SharePoint online jak i w wersji instalowanej lokalnie.