Tworzenie eventów w kalendarzu Outlook przy użyciu MS Flow i MS Graph API

#Office 365, #SharePoint, #PowerApps, #Flow, #MS Graph, #Webcon BPS, #Running & #Technology

Tworzenie eventów w kalendarzu Outlook przy użyciu MS Flow i MS Graph API

Chcąc utworzyć nowy event w kalendarzu użytkowników korzystających z Office 365 Outlook, mechanizmem z którego mogę skorzystać w MS Flow jest akcja „Create event (V2)”. Jest to prosta akcja, która pozwoli mi na zdefiniowanie parametrów eventu, takich jak temat, godzina rozpoczęcia i zakończenia, wymagani uczestnicy, a następnie wyśle do wskazanych osób tradycyjne zaproszenie, które będą mogli zaakceptować lub odrzucić.

Są jednak różne sytuacje, w których chciałbym ograniczyć ilość akcji, jakie musi wykonać użytkownik i ilość maili, które otrzyma.

Przykładowo – mam stronę SharePoint z formularzem, który moi użytkownicy wykorzystują, aby zapisać się na webinarium. W takim przypadku chciałbym uprościć ten proces, zrezygnować z konieczności akceptacji wydarzenia przez użytkownika (co wydaje się zbędne, gdy sam się na nie zapisał) i od razu utworzyć wpis w jego kalendarzu. Najprościej i najszybciej jest wykorzystać możliwości, które daje mi MS Graph API.

Skorzystam z prostej listy SharePoint nazwanej „Events”, na której tworząc nowy element wybieram użytkownika (kolumna „user or group”) oraz event (kolumna lookup na listę ze słownikiem eventów), czas rozpoczęcia, zakończenia oraz opis wydarzenia podstawia się sam (również kolumny lookup na listę ze słownikiem eventów).

Wykorzystam też Flow, który stworzyłem w poprzednim poście (https://bartoszwojciechowski.pl/2019/04/28/pierwsze-kroki-z-ms-flow-i-graph-api-rejestracja-aplikacji-oraz-pobranie-access-token-we-flow/)

Na początek, aby utworzyć wpis w odpowiednich godzinach, muszę wiedzieć, w jakiej strefie czasowej znajduje się użytkownik. W tym celu we Flow dodaję akcję HTTP, która poprzez MS Graph API pobierze tę informację.

Zarejestrowana aplikacja, z której korzystamy, musi mieć co najmniej uprawnienia MailboxSettings.Read, aby pobrać informacje o strefie czasowej.

W URI podstawiam email uczestnika – informacja ta pochodzi z kolumny Participant z listy SharePoint. Wykorzystuje też pobrany wcześniej access token.

Testuję Flow i w odpowiedzi dostaję informację o tym, jaką strefę czasową ma mój użytkownik. Zaznaczam całą zawartość Body i kopiuję do schowka.

W moim Flow dodaję kolejną akcje typu „Parse JSON”, w której jako Content wskazuje Body z poprzedzającego ją requestu. Żeby wygenerować schemę klikam „Use sample payload…” i wklejam w okno zawartość Body ze schowka.

Teraz mogę przejść już do kolejnej akcji HTTP, którą przy użyciu MS Graph API utworzę nowy event w kalendarzu użytkownika. Jak powinno wyglądać Body mojego requestu można sprawdzić np. pod tym linkiem – https://docs.microsoft.com/en-us/graph/api/user-post-events?view=graph-rest-1.0&tabs=cs

Zarejestrowana aplikacja, z której korzystamy, musi mieć co najmniej uprawnienia Calendars.ReadWrite , aby pobrać utworzyć event w kalendarzu Outlook.

Jako temat podstawiam nazwę eventu, czyli wartość z kolumny lookup wskazującej na „Title”). Jako opis, czas rozpoczęcia i zakończenia wartości pochodzące z kolumn lookup wskazujących na event, jako email oraz displayname uczestnika – właściwości użytkownika występującego w kolumnie „Participant”.

Tworzę nowy element na mojej liście SharePoint, który wyzwała jednocześnie mój Flow i…

…po chwili w moim kalendarzu pojawia nowy event.

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *