Wiadomość e-mail z plikiem iCalendar

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:

  1. Kiedy się rozpoczyna
  2. Ile trwa / kiedy się kończy
  3. Gdzie się odbywa
  4. 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.

  1. 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:

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:

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.