Jednym z najpopularniejszych rozwiązań służącym do przesyłania zaproszeń na wydarzenia za pomocą maila jest plik ICS.
Czym on jest możemy poczytać szerzej w Internecie, natomiast tutaj zajmę się tym do czego służy oraz jak go użyć w prosty sposób w Power Automate.
Przypuśćmy, że mamy taki przypadek biznesowy:
Dział IT cyklicznie wysyła zaproszenia na szkolenia z podstawowej wiedzy z zakresu IT, podstawowych narzędzi itp. Dla tej potrzeby stworzono listę Sharepoint, na której znajdują się podstawowe dane o szkoleniach:
- Kiedy się rozpoczyna
- Ile trwa / kiedy się kończy
- Gdzie się odbywa
- Ew. dodatkowe informacje jak link do szkolenia w MS Teams, agenda, opis.
Codziennie o 9ej rano automat sprawdza listę, czy w dniu jutrzejszym występuje jakieś szkolenie i rozsyła do wszystkich w organizacji maila wraz z zaproszeniami do szkoleń w formie załączników.
Po otwarciu takie załącznika każdy może w wygodny i opcjonalny sposób dodać sobie szkolenie do kalendarza.
Wygląda to mniej więcej tak:
Ten załącznik to właśnie plik ICS (iCalendar). Widzimy zatem do czego może on nam się przydać.
Przejdźmy więc do samego rozwiązania.
- Tworzymy przepływ w w oparciu i wyzwalacz zaplanowany.
2. Pobieramy elementy z listy SPO i odpowiednio je filtrujemy względem jutra. Najbezpieczniej jest to zrobić tak, by wyfiltrować wartości większe, niż dziś i mniejsze niż pojutrze. Dzięki temu nie musimy pobierać wszystkich elementów i filtrować ich w kolejnym kroku. Stosujemy to tylko dlatego, że mamy pewność, że danego dnia jest tylko 1 szkolenie. W innym przypadku musielibyśmy pobrać wszystkie elementy większe, niż dziś, a dopiero w kolejnej akcji dokonać filtrowania danych już stosując formatowanie pobranych wartości.
Pole filtru wygląda obecnie tak:
Date gt '@{formatDateTime(utcNow(),'yyyy-MM-dd')}' and Date lt '@{formatDateTime(addDays(utcNow(),2),'yyyy-MM-dd')}'
3. Wyciągamy potrzebne nam dane dla zachowania czytelności w osobnych akcjach „Compose”. Pamiętamy o tym, żeby za pomocą funkcji „First()” wydobyć tylko wartość pierwszego wiersza z wyciągniętych danych w akcji „Get items”, aby uniknąć niepotrzebnego użycia pętli „Apply to each”. Dbamy przy okazji o odpowiednią składnię i format wymagany w pliku ICS i tak kolejno.
Uwaga!
Ważne jest, aby składnia pliku ICS miała daty w odpowiednim formacie i wskazywały one jednoznacznie strefy czasowe. W przeciwnym wypadku, jeżeli nie wskażemy stref czasowych, to plik przy otwarciu w Kliencie pocztowym uzna to za czas UTC i doda odpowiednią ilość godzin względem ustawień klienta pocztowego.
Dla polskiej strefy czasowej powinno to wyglądać tak:
convertTimeZone(triggerOutput()?[body/Data'],'UTC','Central European Standard Time','yyyyMMddTHHmmssZ')
5. Przygotowujemy kolejne elementy
6. W końcu łączymy całość tworząc zawartość pliku ICS.
7. Tak przygotowaną treść pliku ICS wysyłamy mailem o przygotowanej treści w załączniku dodając plik.
Dodaj komentarz
Musisz się zalogować, aby móc dodać komentarz.