Dyskusja -

0

Dyskusja -

0

Rejestracja zmiany użytkownika w kolumnie typu person – SharePoint

Czy  zastanawiałeś się kiedyś nad tym w jaki sposób dobrać się do wnętrza Twojej kolumny Sharepoint’owej i wyciągnąć z niej wszystkie informacje o historii zmian jakie w niej zachodziły, ale oczywiście w taki sposób, aby dało się je później wykorzystać na potrzeby procesów Power Automate?

W tym artykule opowiem Ci jak to zrobić, ale pozwól że najpierw wprowadzę Cię w mój case businessowy, na którego przykładzie będę bazował.

Słowem wstępu do mojego procesu, załóżmy, że na jednej liście przechowuje jakieś dane o użytkowniku z wykorzystaniem kolumny typu Person, a na drugiej liście chciałbym zarejestrować zmianę jaka w tej kolumnie zaszła, a następnie zapisać informacje o moim bieżącym i poprzednim użytkowniku na innej liście, jako swego rodzaju log.

Jak wygląda schemat?

Proces rozpoczyna się od kroku When an item is created or modified, a następnie inicjalizuje sobie 2 puste zmienne typu string – #emailPerson oraz #int. Ta pierwsza posłuży mi do przechowywania informacji o wszystkich adresach email z wydobytej historii zmian wewnątrz kolumny.

Druga zmienna #int posłuży mi do przechwycenia informacji o tym ile liter posiada każdy pojedynczy wymieniony adres email. A dlaczego tak? O tym zaraz..

Obraz1 - Rejestracja zmiany użytkownika w kolumnie typu person - SharePoint

Kolejnym krokiem jest użycie Send http request to Sharepoint w celu wydobycia informacji o zmianach zachodzących wewnątrz mojego rekordu na liście Sharepoint, aby dalej ze zwróconej w ten sposób odpowiedzi naszego nagłówka http przekonwertować uzyskane dane, za pomocą funkcji Parse JASON.

(Pamiętaj, aby za pierwszym razem otrzymany zwrot http request przekopiować do Generate from Sample – funkcji-  Parse JASON), aby móc kontynuować proces. )

Obraz2 - Rejestracja zmiany użytkownika w kolumnie typu person - SharePoint

I od teraz zaczyna się całą magia 😉. Ten krok rozpoczynam pętlą Apply to each 3, w której dla wszystkich adresów email, w kolumnie typu person sprawdzam, czy otrzymana wartość nie jest pusta, a następnie uzyskany wynik zapisuje w formie tekstowej funkcjami Append to string variable prosto do zainicjowanych wcześniej zmiennych.

Jak możecie zauważyć, w pierwszej zmiennej #emailPerson zapisują się wszystkie adresy email jako jeden ciąg znaków, a do drugiej zmiennej #int zapisuje się suma ilości znaków dla każdego wyodrębnionego adresu email rozdzielonego przecinkiem.

Jaki jest cel tego zabiegu?

Pętla wykonując ruch zapisuje mi do zmiennej tekstowej każdy wyciągnięty adres email przez co struktura tych danych wewnątrz zmiennej #emailPerson prezentować będzie się w taki sposób:
adres1@developico.comadres2@developico.comadres3@developico.com – bez przecinków, po prostu jeden adres email po drugim.

W tym założeniu proszę zwrócić uwagę, że adres1@developico.com to adres email mojej najnowszej wprowadzonej zmiany w kolumnie typu Person – czyli moja pierwotna zmiana na głównej liście, a mnie interesuje następujący po nim adres email, czyli  adres2@developico.com – ten jeden wcześniej z kolei w historii wersji.

Dlatego w drugiej zmiennej #int zapisywałem informacje o tym ile znaków posiada każdy pojedynczy wyodrębniony adres email, ponieważ mam zamiar, w kolejnym kroku, za pomocą operacji tekstowych, wydobyć tylko drugi z kolei adres email, a resztę ciągu znaków usunąć.

Obraz3 - Rejestracja zmiany użytkownika w kolumnie typu person - SharePoint

Rozpoczynając od funkcji Compose: u mnie nazwanej char, w której to, za pomocą wyrażenia expresion @{int(first(split(variables(‘int’),’,’)))}  wyciągam liczbę znaków mojego pierwszego w kolei adresu email, którego przechowuje wewnątrz zmiennej #int.

Następnie ze zmiennej #emialPerson usuwam znaki w ilości o długości ciągu przechowywanego w char rozpoczynając od lewej strony. Czyli podsumowując usuwam z mojego głównego ciągu znaków wartość sumaryczną znaków pierwszego znalezionego adresu email.

@{substring(variables(’emailPerson’),outputs(‘char’),sub(length(variables(’emailPerson’)),outputs(‘char’))) }

Na tym etapie chcąc przejść  uzyskania tylko nickname’u użytkownika rozpoczynam operację w której to usuwam wszystko co występuje po pierwszym znalezionym znaku „@”. @{first(split(outputs(‘Compose_8′),’@’)) }

W ten oto sposób udało nam sam uzyskać Nickname (jak w konektorze #office365User) który wymagany jest w ostatecznym kroku przy zapisie użytkownika z wykorzystaniem Claimsa.

i:0#.f|membership|@{outputs(‘Compose_9’)}

Podsumowanie

Podsumowując całość omawianego przeze mnie procesu.

Za pomocą funkcji http request udało mi się wydobyć całą historię wersji i zmian w kolumnach mojej listy, następnie te dane zostały odpowiednio przekonwertowane z użyciem funkcji Parse Jason w celu dalszego przetwarzania.

Następnie z otrzymanych rezultatów za pomocą pętli apply to each zapisałem sobie informacje o wszystkich przechwyconych wersjach tego rekordu, w moim przypadku kolumna typu Person.

Warunkując zwrócone adresy email i zapisując je do zmiennej w postaci jednego ciągu znaków, a do drugiej zmiennej przekazywałem sumę ich długości.
Finalnie za pomocą operacji tekstowych w uzyskanym ciągu znaków usunąłem pierwszy adres email z kolei, a następnie wszystko co wystąpiło po pierwszym znaku @.

Tak, aby za pomocą Claimsa użytkownika utworzyć rekord o zeszłej zmianie na nowej liście.

Mateusz Przybysz

0 komentarzy

Wyślij komentarz

Twój adres e-mail nie zostanie opublikowany.

Jak przestępcy zdobywają twoje hasła 

Jak przestępcy zdobywają twoje hasła 

W moim wcześniejszym poście pisałem o problemach z hasłami i o tym, jak ułatwiamy pracę atakującym. Wspomniałem też, że są mechanizmy ochronne i drobne zmiany w naszych nawykach, które mogą pomóc. Teraz nadszedł czas, aby zagłębić się w szczegóły i zobaczyć, jak dokładnie można zdobyć Twoje dane uwierzytelniające. Nie martw się, nie będę zbyt technicznie. Mam nadzieję!

O końcu Excela

O końcu Excela

Przez jednych zwany królem, przez innych upadłym aniołem. Microsoft Excel. Historia zna ludzi odważnych, którzy nie uznając innych władców służyli tylko jemu. Prezentacja? Nie ma problemu. Aplikacja? Proszę bardzo. Brzmi, jak ponury żart, ale uwierzcie mi na słowo – widziałem te pierwsze (to bardziej jako ciekawostka) i często spotykam te drugie zrobione właśnie w MS Excel.