SharePoint, Power Platform Blog STRONA GŁÓWNA

Dawka wiedzy o Zatwierdzeniach (Approvals) w Power Automate

W dzisiejszym artykule podzielę się z wami wiedzą na temat Zatwierdzeń (Approvals) wykorzystywanych w przepływach Power Automate. Słowem wprowadzenia czas na trochę teoretycznej wiedzy, zatem czy w ujęciu technicznym są zatwierdzenia?

Zatwierdzenia (Approvals) jest konektorem w Power Automate, który uruchamia akcje wykorzystywane w tworzeniu oraz automatyzacji procesów wymagających zatwierdzenia przez wyznaczoną osobę. Dostępne są cztery typy zatwierdzeń:

Uruchom i zaczekaj na zatwierdzenie – akcja uruchamia zautomatyzowany proces zatwierdzania, a następnie czeka na jego zakończenie. Przepływ zatrzymuję się w tym miejscu dopóki użytkownik nie podejmie decyzji. Jest to najczęściej wykorzystywany typ zatwierdzeń.

Uruchom i czekaj na zatwierdzenie tekstu – akcja uruchamia zautomatyzowany proces zatwierdzania tekstu, a następnie czeka na jego zakończenie. Przepływ zatrzymuję się w tym miejscu dopóki użytkownik nie podejmie decyzji.

Utwórz zatwierdzenie – akcja uruchamia zautomatyzowany proces zatwierdzania, ale nie czeka na zakończenie zatwierdzenia. Przepływ nie zatrzymuję się w tym miejscu, a akcje umieszczone są wykonywane.

Zaczekaj na zatwierdzenie – akcja oczekuje na zakończenie określonego zatwierdzenia.

undefined

 

Co w przypadku jeśli wyznaczona osoba nie odpowie na zatwierdzenie?

W momencie gdy wysłane zatwierdzenie przez przepływ Power Automate nie zostanie zatwierdzone lub odrzucone przez odpowiedzialną za to osobę w ciągu 30 dni, przepływ potocznie mówiąc „wywali się” po osiągnieciu tej liczby dni.

Co w przypadku jeśli przepływ zostanie anulowany?

Jeśli przepływ został anulowany, zatwierdzenie wysłane do wskazanego odbiorcy drogą mailową nie zostanie usunięte z jego skrzynki pocztowej i będzie ciągle dla niego widoczne.

Czym w praktyce są zatwierdzenia?

Zatwierdzenia (Approvals) wykorzystywane w przepływach Power Automate są bardzo przydatnym narzędziem w przypadkach gdy pewne decyzje muszą być zweryfikowane, a następnie zaakceptowane lub odrzucone przez wyznaczonego do tego użytkownika.

Przykładem takiego działania mogą być wysyłane wnioski urlopowe przez pracowników w celu zatwierdzenia ich przez swoich przełożonych, którzy następnie podejmują stosowną decyzję. Najczęściej po tym użytkownicy otrzymują powiadomienie mailowe z informacją czy mogą spokojnie iść na urlop czy jednak muszą siedzieć w pracy.

Aby lepiej przedstawić i zwizualizować proces zatwierdzania procesów urlopowych wykonajmy przepływ w Power Automate:

1. Jako wyzwalacz wybieramy „Po utworzeniu elementu (When an item is created)”, a następnie wypełniamy wymagane pola wskazując adres witryny oraz listę, na której umieszczane są wnioski o urlop.

undefined

2. Dodajemy kolejną akcję o nazwie „Uruchom i czekaj na zatwierdzenie (Start and wait for an approval)”. Po dodaniu widoczne będzie jedno pole: Typ zatwierdzenia, w którym wybieramy opcję Zatwierdź/Odrzuć – pierwsza osoba do udzielenia odpowiedzi.

undefined

Wyświetlone zostaną pozostałe pola, w których zawarte informacje będą wyświetlane w wysłanym zatwierdzeniu. Należą do nich:

Tytuł – wpisujemy tytuł jaki ma nosić nasze zatwierdzenie.

Przypisane do – wskazujemy osobę, która będzie odpowiedzialna za wydanie decyzji w sprawie wniosku

Szczegóły – w tym polu umieszczamy treść, która ma być wyświetlona w zatwierdzeniu.

Link do elementu – umieszczamy link prowadzący do elementu na liście SharePoint

Opis linku do elementu – opis linku prowadzącego do elementu na liście SharePoint

undefined

3. Dodajemy akcję o nazwie „Warunek (Condition)”, a następnie przechodzimy do jego formułowania. Klikamy lewym przyciskiem myszy w pole Wybierz wartość znajdujący się po lewej stronie warunku, a następnie zawartością dynamiczną Odpowiedzi Odpowiedź osoby zatwierdzające pochodzącą z akcji Uruchom i czekaj na zatwierdzenie. Automatycznie zostanie utworzona pętla Zastosuj do każdego (Apply to each).

undefined

W polu znajdującym się po środku naszego warunku wybieramy opcję „jest równe”, w polu Wybierz wartość znajdującym się po prawej stronie wpisujemy ręcznie słowo „Approve”.

undefined

4. W gałęzi warunku Jeśli tak dodajemy nową akcję o nazwie „Wyślij wiadomość e-mail (V2) (Send an email (V2))”. Po zaakceptowaniu wniosku i wydaniu pozytywnej opinii przez zatwierdzającego zostanie wysłana wiadomość email do wnioskującego z informacją o pozytywnym rozpatrzeniu jego wniosku urlopowego. Pozostało nam wypełnić wymagane pola akcji takie jak:

Do – wybieramy kto ma być adresatem, w tym przypadku zrobimy to dynamicznie. Klikamy lewym przyciskiem myszy w pole, a następnie wybieramy opcję „Utworzone przez nazwa wyświetlana (Created By DisplayName)”.

Temat – wpisujemy temat jaki będzie nosiła wiadomość email skierowana do wnioskującego.

Treść – treść maila z informacją o akceptacji wniosku urlopowego wraz z komentarzem zatwierdzającego.

undefined

5. W gałęzi warunku Jeśli nie dodajemy nową akcję o nazwie „Wyślij wiadomość e-mail (V2) (Send an email (V2))”. Po odrzuceniu wniosku i wydaniu negatywnej opinii przez zatwierdzającego zostanie wysłana wiadomość email do wnioskującego z informacją o negatywnym rozpatrzeniu jego wniosku urlopowego. Pozostało nam wypełnić wymagane pola akcji takie jak:

Do – wybieramy kto ma być adresatem, w tym przypadku zrobimy to dynamicznie. Klikamy lewym przyciskiem myszy w pole, a następnie wybieramy opcję „Utworzone przez nazwa wyświetlana (Created By DisplayName)”.

Temat – wpisujemy temat jaki będzie nosiła wiadomość email skierowana do wnioskującego.

Treść – treść maila z informacją o akceptacji wniosku urlopowego wraz z komentarzem zatwierdzającego.

undefined

Usuwanie użytkowników z grup SharePoint za pomocą Power Automate

Dla osób, które z SharePointem nie mają dużej styczności na co dzień temat grup może być problematyczny. Mogą pojawić się pytania: jak w ogóle utworzyć taką grupę, jak dodawać i usuwać z niej użytkowników, jak się nią zarządza? Na szczęście istnienie narzędzia jak Power Automate pomoże nam w zautomatyzowaniu części procesów jeśli chodzi o zarządzanie takimi grupami. Między innymi jak usunąć użytkownika z grupy poprzez przepływ Power Automate.

Zaczniemy od utworzenia listy, która zawierać będzie kolumnę typu „Osoba lub grupa (User or group)”. Do tej kolumny będą wpisywani użytkownicy, którzy znajdują się w organizacji oraz ich konta są aktywne w Azure AD. Nazwijmy naszą kolumnę np. „Osoba do usunięcia”.

undefined

Dla codziennego użytkownika SharePointa będzie to spore ułatwienie, ponieważ dodając element na listę zawierający imię i nazwisko użytkownika, będzie także usuwał go z grupy poprzez zautomatyzowany proces. Dzięki temu nie trzeba grzebać w grupach i przeskakiwać po stronach i opcjach, aby odnaleźć daną grupę i usuwać ręcznie wskazanego użytkownika.

Jak zatem zbudować taki przepływ? Przedstawię wam rozwiązanie w poniższych punktach:

  1. Budowę naszego przepływu rozpoczynamy od wyboru wyzwalacza (triggera), a będzie to konkretnie „Po utworzeniu elementu (When an item is created)”. Następnie wskazujemy adres witryny, na której znajduję się lista oraz nazwę tej listy.

    undefined
  2. Dodajemy nową akcję o nazwie „Pobierz elementy (Get items)”, a następnie tak jak wcześniej wskazujemy adres witryny, na której znajduję się lista oraz nazwę tej listy.

    undefined
  3. Ostatnią akcją, którą dodamy do naszego przepływu, będzie akcja o nazwie „Wyślij żądanie HTTP do programu SharePoint (Send an HTTP request to SharePoint)”. Wypełniamy w niej następujące pola:

    Adres witryny – wskazujemy witrynę, na której utworzona jest lista

    Metoda – jako metodę wybieramy POST

    Identyfikator URI – wypełniamy go poniższym wyrażeniem. W miejscu znacznika <ID> należy wpisać identyfikator ID grupy, z której mają być usuwani użytkownicy.
    _api/web/sitegroups(<ID>)/users/removeByLoginName
    Akurat w tym przypadku ID grupy, z której będą usuwani użytkownicy to liczba 18.
    _api/web/sitegroups(18)/users/removeByLoginName

    Nagłówki – w tym polu przełączamy parametr nagłówka do trybu tekstowego poprzez kliknięcie ikony umieszczonej po prawej stronie od pola.

    undefined
    Następnie, gdy już mamy dostępnie pole tekstowe wklejamy w nie poniższe wyrażenie.

    {
    "Accept": "application/json;odata=verbose",
    "Content-Type": "application/json;odata=verbose"
    }

    Treść – w tym polu wskazujemy użytkowników, którzy mają zostać usunięci. Jako, że nie możemy zrobić tego na sztywno wpisując ręcznie użytkowników, ponieważ nie możemy przewidzieć jakie osoby będą dodane do listy SharePoint skorzystamy z zawartości dynamicznej.

    W miejscu znacznika <User> z zawartości dynamicznej wybieramy kolumnę, która zawiera informację o naszych użytkownikach. Ważne żeby z zawartości dynamicznej wybrać opcję Claims, która jest obiektem oraz zawiera informację o danym użytkowniku zawartym w kolumnie. 

    {
    "loginName":'<User>'
    }
    Na ówcześnie utworzonej liście SharePoint, do której mają zostać dodawani użytkownicy w celu usuwania ich z grup została stworzona kolumna o nazwie Osoba do usunięcia. To właśnie ją wykorzystamy wybierając z zawartości dynamicznej opcję Osoba do usunięcia Claims pochodzącą z akcji „Pobierz elementy (Get items)”. Po dodaniu tej opcji automatycznie powinna utworzyć się pętla „Zastosuj do każdego (Apply to each)”.

    undefinedundefined

I takim oto sposobem nasz proces usuwania użytkowników z grupy został zautomatyzowany oraz stał się bardziej przyjazny dla codziennych użytkowników SharePoint.

Jak porównać nowo utworzony element listy SharePoint zawierający załączniki ze zmodyfikowanym elementem listy?

Po przeczytaniu tytułu tego wpisu pewnie zastanawiacie się, że zrobienie takiego warunku w Power Automate to bułka z masłem. Wystarczy porównać datę i czas utworzenia, a datę i czas modyfikacji. I tutaj ten pomysł by zadziałał w przypadku gdybyśmy nie mieli dodanych załączników do elementu listy.

Na poniższym zrzucie ekranu możemy zobaczyć, że wcześniej wspomniane czasy są sobie równe podczas tworzenia nowego elementu na liście SharePoint.

undefinedCzas utworzenia nowego elementu z załącznikami nie będzie równy czasowi modyfikacji podczas pierwszego dodawania. Fakt posiadania załączonych plików powoduje to, że między tymi dwoma czasami występuję około 2 sekundowe opóźnienie.

Możemy to zaobserwować na poniższym screenie.

undefined

Jak zatem zbudować warunek, aby oba te czasy zgadzały się ze sobą? Przedstawię wam rozwiązanie w poniższych punktach:

  1. Do utworzonych akcji w przepływie dodajemy akcję „Warunek”, a następnie przechodzimy do jego formułowania. Klikamy w pole Wybierz wartość znajdujący się po lewej stronie, a następnie przechodzimy do zakładki Wyrażenie.

    undefined
  2. Nasze wyrażenie będzie miało poniższą postać, gdzie w miejscu znacznika <Zmodyfikowane> z zawartości dynamicznej wybieramy opcję Zmodyfikowane (Modified) pochodzącej z np. wyzwalacza (triggera), a w miejscu znacznika <Utworzone> wybieramy opcję Utworzone (Created) również z zawartości dynamicznej pochodzącej z np. wyzwalacza (triggera).
    sub(ticks(<Zmodyfikowane>),ticks(<Utworzone>))
    Taką finalną postać będzie miało nasze wyrażenie w przypadku kiedy zostaną wybrane opcje Modified oraz Created pochodzące z wyzwalacza flow.
    sub(ticks(triggerOutputs()?['body/Modified']),ticks(triggerOutputs()?['body/Created']))
  3. W polu znajdującym się po środku naszego warunku wybieramy opcję „jest mniejsze niż”, a następnie przechodzimy do pola Wybierz wartość znajdującego się po prawej stronie warunku. W tym miejscu wpisujemy ręcznie liczbę 30000000. Tym sposobem warunek dokładnie rozpozna kiedy nasz element listy z załącznikami został utworzony, a kiedy zmodyfikowany. 

    undefinedW przypadku utworzenia nowego elementu z załącznikami na liście nasz warunek będzie spełniony i zostanie zwrócona wartość „true”, natomiast jeżeli element zostanie zmodyfikowany otrzymamy wartość „false”

Zapisywanie załączników i treści wiadomości email jako nowy element na liście SharePoint

Po co zapisywać wiadomości email na liście SharePoint skoro służy do tego skrzynka pocztowa? W przypadku, jeśli wiadomości wysyłane są tylko na konkretny adres email, a mają one trafić do większej ilości osób to takie rozwiązanie będzie wybawieniem. Cały proces będzie zautomatyzowany za pomocą Power Automate, a użytkownicy zostaną odciążeni od manualnych interakcji związanych z dalszym przesyłaniem wiadomości. Takie rozwiązanie dobrze się sprawdzi np. dla obsługi zgłoszeń Help desk

Warunkiem do poprawnego działania jest udostępniona skrzynka mailowa.

W poniższych krokach przedstawię wam budowę przepływu, który jest odpowiedzialny za zapis wiadomości email wraz z załącznikami do listy SharePoint jako nowy element:

  1. Jak zawsze rozpoczynamy pracę od wyboru wyzwalacza (triggera), w naszym przypadku będzie to „Po nadejściu nowego e-maila do udostępnionej skrzynki (wersja 2)” (When a new email arrives in a shared mailbox (V2)).

    Wskazujemy Adres oryginalnej skrzynki pocztowej oraz Folder. Następnie klikamy opcję „Pokaż opcje zaawansowane”.

    undefined W polu dołącz załączniki zmieniamy wybór na „Tak”.

    undefined
  2. W naszym przypadku przykładem będzie lista o nazwie „Help desk zgłoszenia”, w której zapisywane będą zgłoszenia od użytkowników, przesyłane na skrzynkę mailową.

    W przepływie dodajemy nową akcję „Utwórz element”, a następnie za pomocą zawartości dynamicznej wypełniamy pola kolumn, w których będą zawarte elementy treści maila:

    Temat zgłoszenia – w tej kolumnie zapisywany będzie temat przesłanej wiadomości email. Z zawartości dynamicznej wybieramy opcję Temat, pochodzącą z wyzwalacza (triggera).

    Opis problemu – w tej kolumnie zapisywana będzie treść przesłanej wiadomości email. Z zawartości dynamicznej wybieramy opcję Podgląd treści, pochodzącą z wyzwalacza (triggera).

    Zgłaszający – w tej kolumnie zapisywana będzie informacja od kogo została przysłana wiadomość email. Z zawartość dynamicznej wybieramy opcję Od, pochodzącą z wyzwalacza (triggera). Prawidłowe wyświetlanie użytkowników w kolumnie będzie tylko wtedy, kiedy będą pochodzili oni z organizacji.

    undefined
  3. Zapisywanie treści mamy już z głowy i teraz możemy zająć się zapisem załączników. Dodajemy akcję „Pobierz załącznik (wersja 2)” (Get attachment (V2)), następnie wypełniamy poniższe pola:

    Identyfikator wiadomości – z zawartości dynamicznej wybieramy opcję Identyfikator wiadomości, pochodzącą z wyzwalacza (triggera).

    Identyfikator załącznika – z zawartości dynamicznej wybieramy opcję Załączniki Identyfikator załącznika, pochodzącą z wyzwalacza (triggera). Po dokonaniu wyboru zostanie utworzona pętla Zastosuj do każdego.

    Adres oryginalnej skrzynki pocztowej – w tym polu wpisujemy adres naszej udostępnionej skrzynki pocztowej.

    undefined
  4. Znajdując się w pętli Zastosuj do każdego dodajemy kolejną akcję, a mianowicie „Dodaj załącznik” (Add attachment). W wymaganych polach wskazujemy adres witryny oraz nazwę naszej listy, a także wypełniamy poniższe pola:

    Identyfikator – z zawartości dynamicznej wybieramy opcję identyfikator ID, pochodzącą z akcji Utwórz element.

    Nazwa pliku - z zawartości dynamicznej wybieramy opcję Nazwa, pochodzącą z akcji Pobierz załącznik (wersja 2).

    Zawartość pliku – z zawartości dynamicznej wybieramy opcję Bajty zawartości, pochodzącą z akcji Pobierz załącznik (wersja 2).

    undefined

Dobra praktyka nazewnictwa akcji oraz dodawania uwag w Power Automate

Odpowiednie nazewnictwo akcji podczas budowania przepływów w Power Automate jest bardzo ważnym aspektem, ponieważ  dzięki niej zachowany jest porządek oraz ład wykonywanej pracy.

Załóżmy taki przypadek, że deweloper, który pracował nad swoim przepływem niestety zachorował, a deadline oddania projektu depcze po piętach. Nie ma innego wyjścia jak przekazanie pracy innej osobie, w celu dokończenia projektu. Nowy deweloper siada do pracy, a tam zastaje nie ponazywane akcje, których jest multum, a także brak jakiegokolwiek komentarza czy uwag. Teraz musi poświęcić sporą ilość czasu, aby zorientować się jaki jest sens zbudowanego przepływu i domyślać się co autor miał na myśli.

Aby unikać takich sytuacji dobrze jest stosować poniższe praktyki:

Stosowanie uwag – uwagi powinny opisywać zamierzony cel, który zostanie wykonany przez akcję. Będzie to spore ułatwienie, ponieważ nie będzie potrzeby dokonywania większej analizy po wejściu w ich podgląd.

undefined

 undefined

Stosowanie nazewnictwa akcji – jest to niezbędna czynność, jeśli w dalszym procesie budowania przepływu będziemy chcieli skorzystać z zawartości dynamicznej, ponieważ każda z akcji będzie odpowiednio opisana. W przypadku gdyby nazewnictwo nie było zastosowane, moglibyśmy mieć kłopot z rozróżnieniem, z której akcji zawartość dynamiczna jest tą prawidłową bez jej dokładnej analizy.

undefined
Nazwy akcji powinny zostawać w swojej oryginalnej formie, takiej która jest wyświetlana po jej dodaniu. Najlepiej oddzielić jej nazwę od wartości opisujących akcję poprzez użycie dwukropka ( : ).

undefined


Błędem będzie gdy oryginalne nazwy zastąpimy własnymi wartościami, ponieważ będzie ciężko nam i innym deweloperom rozpoznać czym jest dana akcja i za co odpowiada w całym przepływie.

undefined

Nadawanie uprawnień grupie SharePoint poprzez proces Power Automate

Gdy podczas tworzenia przepływu w Power Automate zaistnieje potrzeba nadania uprawnień dla większej ilości osób, najlepszym rozwiązaniem będzie nadanie ich dla całej grupy użytkowników. Pierwsze co może przyjść do głowy dewelopera to wykorzystanie akcji „Udziel dostępu do elementu lub folderu” (Grant access to an item or a folder). Nie zawsze to rozwiązanie będzie trafne w punkt.

Jak zatem zautomatyzować proces nadawania uprawnień dla grupy? Przedstawię wam to w poniższych punktach:

  1. Pierwszą czynnością, której dokonamy będzie pobranie unikalnego identyfikatora listy zwanego GUID, będącym ciągiem znaków. Teraz pewnie zastanawiacie się po co nam się to przyda?

    Już tłumaczę, wykorzystamy go w akcji „Wyślij żądanie HTTP do programu SharePoint” (Send an HTTP request to SharePoint), w której nadamy uprawnienia dla grupy do elementu na liście. W większości przypadków, na różnych forach czy blogach można zauważyć sposób, w którym to wskazujemy listę po jej nazwie podczas nadawania uprawnień. I tutaj należy zadać pytanie, a co jeśli nazwa tej listy zostanie zmieniona?

    Wtedy nasz przepływ zakończy swój bieg niepowodzeniem, oraz zostanie zwrócony błąd o problemie z odnalezieniem listy. Aby uniknąć takiej sytuacji, my wskażemy naszą listę po jej identyfikatorze GUID, którego nie da się edytować i zawsze będzie odnosił się do danej listy, nawet po modyfikacji jej nazwy.

    Po małej dawce teorii, czas przejść do praktyki. Gdzie odnaleźć wcześniej już wspomniany identyfikator GUID?

    Potrzebujemy wejść do ustawień listy, a następnie skupić całą swoją uwagę na adresie URL, ponieważ to tam go odnajdziemy. Znajduję się on pomiędzy znacznikami %7B, a %7D. Polecam skopiować go sobie np. do notatnika, ponieważ później będzie nam potrzebny.
    %7B<GUID>%7D
    undefined
  2. Drugą rzeczą, która jest nam niezmiernie potrzebna, jest to pobranie identyfikatora ID grupy, dla której chcemy nadać uprawnienia. Po wejściu do grupy na witrynie SharePoint, zwracamy szczególną uwagę na adres URL, ponieważ w nim znajduję się szukany przez nas identyfikator w postaci cyfry lub liczby. W naszym przypadku będzie to grupa Finanse, a jej ID to 18.

    undefined
  3. Gdy odnaleźliśmy już identyfikator listy możemy przejść do Power Automate, gdzie zapiszemy GUID do zmiennej, aby wykorzystać go w późniejszym procesie nadawania uprawnień. Dodajemy akcję „Inicjuj zmienną” (Initialize variable), a następnie wypełniamy jej pola:

    Nazwa – wpisujemy nazwę, którą będzie nosiła nasza zmienna.

    Typ – z listy rozwijanej wybieramy opcję Ciąg, ponieważ identyfikator GUID chcemy traktować jako tekst.

    Wartość – tutaj wklejamy nasz identyfikator GUID.

    undefined
  4. Przed nadaniem nowych uprawnień należałoby zerwać ich dotychczasowe dziedziczenie na liście. Aby to zrobić dodajemy akcję „Zatrzymaj udostępnianie elementu lub pliku” (Stop sharing an item or a file), a następnie wypełniamy jej wymagane pola:

    Adres witryny – wskazujemy adres witryny, na której została utworzona lista.

    • Nazwa listy lub biblioteki – z listy rozwijanej, wybieramy nazwę naszej listy.

    • Identyfikator – wybieramy identyfikator odnoszący się do elementu listy.

    undefined
  5. Ostatnim i najważniejszym punktem to nadanie uprawnień naszej grupie do elementu listy. Dodajemy akcję „Wyślij żądanie HTTP do programu SharePoint” (Send an HTTP request to SharePoint), następnie wypełniamy jej wymagane pola:

    Adres witryny – wskazujemy adres witryny, na której została utworzona lista.

    Metoda – z listy rozwijanej wybieramy metodę POST.

    Identyfikator URI – to pole interesuje nas najbardziej, ponieważ to dzięki niemu będą nadawane uprawnienia dla grupy.


    W miejscu poniższych znaczników, wybieramy opisane wartości:

    <GUID> = z zawartości dynamicznej wybieramy naszą zmienną, w której zapisaliśmy nasz unikalny identyfikator.

    <ID> = z zawartości dynamicznej wybieramy identyfikator ID, który odnosi się do danego elementu listy. 

    <IDGrupy> = wpisujemy identyfikator ID grupy, której chcemy nadać uprawnienia. 

    <Rola> = wpisujemy numer roli, poziomu uprawnień, jakie mają otrzymać użytkownicy należący do grupy.

    Pełna kontrola = 1073741829
    Projektowanie = 1073741828
    Edycja = 1073741830
    Współtworzenie = 1073741827
    Czytanie = 1073741826
    _api/web/lists(guid'<GUID>')/items(<IDElementu>)/roleassignments/addroleassignment(principalid='<IDGrupy>', roleDefId=<Rola>)
    undefinedW podanym wyżej przypadku możemy zauważyć, że dla grupy o ID = 18 zostały nadane uprawnienia współtworzenia (1073741827) do elementów na liście „Dane sprzedażowe”.

Zrywanie uprawnień na liście SharePoint zawierającej foldery

Lista zawierająca foldery nie jest częstym przypadkiem, ponieważ alternatywą do tego jest utworzenie biblioteki dokumentów i mamy problem z głowy. W przypadku, jeśli pojawi się potrzeba utworzenia takiej listy, nie zawsze chcemy aby wszystkie zawarte w niej foldery były widoczne dla każdego użytkownika. Mowa tutaj o uprawnieniach do elementu, które odpowiedzialne są za to co użytkownicy będą mogli robić i widzieć. Ręczne nadawanie uprawnień może być czasochłonnym zajęciem, dlatego z pomocą przychodzi nam Power Automate, który zautomatyzuje dla nas cały proces.

Ale hola, hola, aby je nadać, musimy najpierw zerwać ich dziedziczenie oraz dotychczasowe uprawnienia. Zatem, jak to zrobić? I tutaj właśnie rozpoczynamy budowanie naszego przepływu, który krok po kroku przedstawię wam w poniższych punktach:

  1. Jak zawsze zaczynamy od wyboru wyzwalacza (triggera). W naszym przypadku będzie to „Po utworzeniu elementu” (When an item is created). W wymaganych polach wskazujemy Adres witryny oraz Nazwę listy.

    undefined
  2. Naszym następnym krokiem będzie dodanie akcji „Wyślij żądanie HTTP do programu SharePoint” (Send an HTTP request to SharePoint). Właśnie, to dzięki niej dojdzie do zatrzymania dziedziczenia uprawnień. 

    Pozostało nam wypełnić wymagane pola oraz te, które są niezbędne do prawidłowego wykonania się akcji:

    Adres witryny – wskazujemy adres witryny, na której utworzona została lista.

    Metoda – z listy rozwijanej wybieramy metodę POST.

    Identyfikator URI – w tym miejscu wpiszemy zapytanie, które na celu będzie miało zerwanie dziedziczenia oraz dotychczasowych uprawnień.

    W miejscu znacznika <ListName> wpisujemy Internal Name listy, który widoczny jest w adresie URL. W naszym przypadku będzie to „ListaFolderyDokumentow”.

    W miejscu znacznika <FolderName>, z zawartości dynamicznej wybieramy opcję Name, która będzie nazwą wyświetlaną utworzonego na liście folderu. W przypadku, jeśli folder nosiłby taką samą nazwę jak jego identyfikator ID, wtedy w miejsce znacznika <FolderName>, z zawartości dynamicznej wybralibyśmy opcję ID.
    _api/Web/GetFolderByServerRelativeUrl('Lists/<ListName>/<FolderName>/')/ListItemAllFields/breakroleinheritance(copyRoleAssignments=false, clearSubscopes=true)
    undefinedundefined
  3. Dziedziczenie oraz dotychczasowe uprawnienia folderu zostały zerwany, a więc przyszedł czas na nadanie nowych. Aby to zrobić, dodajemy akcję „Udziel dostępu do elementu lub folderu” (Grant access to an item or a folder). Do zakończenia procesu dzieli nas tylko prawidłowe wypełnienie poniższych pól:

    Adres witryny - wskazujemy adres witryny, na której utworzona została lista.

    Nazwa listy lub biblioteki – z listy rozwijanej wskazujemy nazwę naszej listy z folderami.

    Identyfikator – wskazujmy identyfikator ID elementu listy, do którego mają zostać nadane uprawnienia.

    Adresaci – wskazujemy osobę lub osoby, którym mają zostać przydzielone uprawnienia do folderu.

    Role – w tym miejscu z listy rozwijanej wybieramy poziom uprawnień jaki mają otrzymać adresaci.

    undefinedDotarliśmy do końca budowania naszego przepływu, gdzie proces zrywania dziedziczenia oraz starych uprawnień został w pełni zautomatyzowany. Już nie musimy się martwić straconym czasem, który poświęcilibyśmy na wykonywanie tych samych czynności ręcznie.

Dodawanie użytkowników z listy do grupy SharePoint

Ręczne dodawanie użytkowników do grup SharePoint może być mozolnym zajęciem dla niektórych osób. Dużo klikania, skakania po zakładkach, głowienia się gdzie odnaleźć listę utworzonych grup. Dla użytkowników, którzy z SharePointem nie mają aż tak dużej styczności na co dzień, automatyzacja takiego procesu byłaby wybawieniem. A co jeśli wam powiem, że istnieje taka opcja w Power Automate?

Zanim przejdziemy do tematu przepływu, musimy utworzyć listę SharePoint, na którą będą dodawani użytkownicy z organizacji poprzez wypełnienie formularza.

Najważniejszym aspektem jest to, aby utworzyć w niej kolumnę o nazwie np. „Użytkownik”, której typem będzie „Osoba lub Grupa” (Person or Group). To właśnie w niej będą zawarte kluczowe dane tj. adres email, które są niezbędne do prawidłowego działania naszego procesu.

undefinedA teraz krok po kroku, przedstawię wam poniżej, jak zbudować przepływ w Power Automate, który za zadanie będzie miał dodawanie użytkowników z listy do grupy SharePoint:

  1. Zacznijmy od wyboru naszego wyzwalacza (triggera), a będzie to dokładnie „Po utworzeniu elementu” (When an item is created). W wymaganych polach wskazujemy Adres witryny oraz Nazwę listy.

    undefined
  2. Następnie dodajemy akcję, w której to właśnie będzie zachodziła cała magia, a mowa tu o akcji „Wyślij żądanie HTTP do programu SharePoint” (Send an HTTP request to SharePoint).

    Pozostało nam wypełnić nam pola, które będą kluczowe w procesie dodawania użytkowników do grupy SharePoint:

    Adres witryny – wskazujemy adres witryny, na której utworzona jest grupa, do której chcemy dodać użytkowników.

    Metoda – w tym polu z listy rozwijanej wybieramy metodę POST.

    Identyfikator URI – tutaj należy wpisać podane poniżej zapytanie, w miejscu <id> wpisujemy identyfikator grupy ID prowadzący do wybranej przez nas grupy. Unikalny numer znajduję się w adresie URL po wejściu do wybranej przez nas grupy. W naszym przypadku będzie to liczba 18.

    undefined
    /_api/web/sitegroups/getbyid(<id>)/users
    Nagłówki – tutaj musimy skupić całą swoją uwagę, aby nie popełnić błędu. Wpisujemy kolejno przedstawione wartości, znajdujące się w tabeli poniżej.

    undefined
    {

    "accept": "application/json;odata=verbose",
    "content-Type": "application/json;odata=verbose"

    }
    Treść – w tym polu również musimy zachować szczególną ostrożność i dołożyć wszelkich starań, aby nie popełnić błędu. W przypadku jego wystąpienia, niestety nasze żądanie HTTP nie zadziała, a to by była ostatnia rzecz, której chcielibyśmy doświadczyć.

    Zalecam skopiować poniższe zapytanie, w miejscu <email>, z zawartości dynamicznej wybieramy email pochodzący z kolumny typu „Osoba lub Grupa” (User or Group). W naszym przypadku będzie to Użytkownik Email.

    undefined
    {

    "__metadata": {

    "type": "SP.User"

    },

    "LoginName": "i:0#.f|membership|<email>"

    }
    undefined
    I tak o to proces budowania naszego przepływu dobiegł końca. Wspólnie dokonaliśmy automatyzacji, która ułatwi pracę niejednemu użytkownikowi, którego koszmarem są grupy SharePoint.

Jak odnaleźć własny poziom uprawnień oraz jak wykorzystać go w akcji „Udziel dostępu do elementu lub folderu”?

Podczas budowania przepływów w Power Automate deweloperzy najczęściej automatyzują proces nadawania uprawnień, aby użytkownicy nie musieli robić tego własnoręcznie. Poza podstawowymi poziomami uprawnień można utworzyć swój własny poziom, a każdy z nich posiada swój unikalny numer.

W takim razie, jak odnaleźć własny poziom uprawnień? Wyjaśnię to w poniższych punktach:

  1. Gdy znajdujemy się na witrynie SharePoint, na której został utworzony własny poziom uprawnień, szczególną uwagę przywiążemy do adresu URL. Na koniec tego adresu wpisujemy:
    /_api/web/roledefinitions
    undefinedNastępnie klikamy przycisk Enter i zostajemy przeniesieni do strony, w której wyświetlony zostaje dziwny ciąg słów i liczb. Spokojnie, wszystko jest w porządku, ponieważ właśnie w tym ciągu zawarty są poziomy uprawnień wraz z ich unikalnymi numerami.

  2. Teraz pozostaje nam odnaleźć unikalny numer własnego poziomu uprawnień. W celu ułatwienia szukania zalecam kliknąć kombinację przycisków CTRL + F, aby móc wyszukać daną frazę w otwartym oknie przeglądarki. Następnie wyszukujemy nazwę utworzonego poziomu, w naszym przypadku będzie to „WspółtworzenieBezUsuwania”. Zazwyczaj będzie się on widoczny na samym dole ciągu tekstu. Nasz numer poziomu będzie znajdował się obok jego nazwy, a dokładnie w znaczniku:
    <d:Id>
    undefinedNajlepiej zapisać go w dogodny miejscu, aby później nie musieć się znowu trudzić z jego odszukiwaniem.

  3. Gdy pozyskamy już potrzebny nam numer, możemy przejść do Power Automate. Aby nadać uprawnienia wykorzystując własny poziom uprawnień dodajemy akcję „Udziel dostępu do elementu lub folderu” (Grant an access to an item or a folder), a następnie wypełniamy wymagane pola:

    Adres witryny

    Nazwa listy i biblioteki

    Identyfikator

    Adresaci

    Role – w tym polu dzieję się cała magia. Po kliknięciu, ukazuje nam się lista rozwijana z dwoma poziomami nadawania uprawnień: edycją oraz czytaniem. Nas nie interesuje żadna z nich, ponieważ chcemy wykorzystać własny poziom.

    Ale jak to zrobić? O to rozwiązanie:

    Wybieramy opcję Wprowadź wartość niestandardową, a następnie wpisujemy role:<roleID>. W miejscu <roleID> wpisujemy ówcześnie zapisany unikalny numer własnego poziomu.
    role:<roleID>
    undefinedundefined

Odwoływanie się oraz filtrowanie kolumny Name w bibliotece dokumentów SharePoint

Co zrobić jeśli podczas budowania przepływu w Power Automate chcemy przefiltrować bibliotekę dokumentów po nazwie folderów lub plików? Do tego będzie nam potrzebne Zapytanie filtru (Power Query).

Pierwsze co przychodzi do głowy, to odwołanie się do kolumny Name w bibliotece SharePoint w Zapytaniu filtru akcji „Pobierz pliki (tylko właściwości)” (Get files (properties only)).

W naszym przypadku potrzebujemy przefiltrować całą bibliotekę dokumentów w celu odnalezienia folderu o nazwie „06-12-2023”. W takim razie utwórzmy nasze zapytanie, które będzie wyglądało następująco:

Name eq '06-12-2023'

undefinedWyżej ukazany sposób niestety nie zadziała i nasz przepływ zakończy swój bieg niepowodzeniem. Jako błąd otrzymamy informację, że kolumna o nazwie „Name” nie istnieje we wskazanej bibliotece i żadne wartości zapytania nie zostaną zwrócone.

undefinedundefined

Można się głowić godzinami, ale jak to nie ma takiej kolumny skoro jest widoczna w bibliotece dokumentów na witrynie SharePoint. Zatem jak prawidłowo odwołać się i przefiltrować kolumnę „Name”, aby odnaleźć szukaną przez nas wartość w postaci folderu o nazwie „06-12-2023”?

Do zapytania filtra zamiast „Name” wpisujemy „FileLeafRef…”. Jest to odnośnik do kolumny, w której zawarta jest pełna nazwa folderu lub pliku w bibliotece SharePoint. Mimo wszystko, że obie nazwy odnoszą się do jednej kolumny to jest między nimi różnica. Polega na tym, że „Name” jest to nazwa wyświetlana kolumny, a „FileLeafRef” jest to tzw. Internal Name będący dokładnym odwołaniem się do kolumny z nazwą. Nasze zapytanie będzie wyglądało następująco:

FileLeafRef eq '06-12-2023'

undefined

Wykorzystując Internal Name „FileLeafRef” w zapytaniu filtra akcji „Pobierz pliki (tylko właściwości)” (Get files (properties only)), przepływ zakończy z powodzeniem swoje działanie oraz wartość naszego zapytania zostanie zwrócona prawidłowo.

Jak pobrać użytkowników z grupy SharePoint po identyfikatorze ID?

Pobieranie użytkowników z grup SharePoint najczęściej wykorzystuje się w przepływach Power Automate, które mają za zadanie np. wysyłanie wiadomości email do większej ilości użytkowników bez wpisywania ich na „sztywno”. Dzięki temu wartość będzie dynamiczna, bez potrzeby ciągłej ingerencji dewelopera w przepływie oraz dokonywaniu zmian.

Najczęściej na forach internetowych znajdziemy rozwiązania, w których użytkownicy są pobierani po nazwie grupy. Teraz zastanówmy się, co w przypadku jeśli nazwa grupy zostanie zmieniona?

Już odpowiadam, przepływ zakończy swój bieg niepowodzeniem, potocznie mówiąc, wywali się. Aby uniknąć takiej sytuacji należy pobrać użytkowników z grupy nie po jej nazwie, a po identyfikatorze ID.

Sposób jak to zrobić przedstawię w poniższych krokach:

  1. Na początku potrzebujemy odnaleźć identyfikator ID danej grupy użytkowników SharePoint. Wchodzimy w grupę, a następnie zwracamy uwagę na adres URL, ponieważ to właśnie w tym miejscu zapisany jest numer ID grupy.

    undefined
  2. Przechodzimy do budowania przepływu w Power Automate. W naszym przypadku wyzwalaczem będzie Wyzwalacz ręczny. Następnie dodajemy nową akcję, w której dokładnie będzie miało miejsce pobranie użytkowników, a mowa tutaj o akcji „Wyślij żądanie HTTP do programu SharePoint” (Send an HTTP request to SharePoint).

    Wypełniamy wymagane pola:

    Adres witryny - na której leży grupa SharePoint

    Metoda – z dostępnych opcji wybieramy opcję GET

    Identyfikator URI – w tym miejscu wpisujemy podane poniżej zapytanie, w miejscu <id> wpisujemy numer ID grupy, który pozyskaliśmy w poprzednim kroku czyli 18.
    /_api/web/sitegroups/getbyid(<id>)/users
    undefined
  3. W przypadku gdy chcemy wysłać wiadomość email do pobranych użytkowników należy dodać akcję „Wybierz” (Select), która wyciągnie z poprzedniej akcji adresy email użytkowników znajdujących się w grupie SharePoint.

    Wypełniamy pola:

    Od – klikamy w puste pole, wyskoczy nam okno dynamicznej zawartości. My natomiast przechodzimy na zakładkę Wyrażenie i wpisujemy:
    body('Wyślij_Żądanie_HTTP_do_programu_SharePoint')?['d']?['results']
    Mapa – analogicznie przechodzimy do zakładki Wyrażenie i wpisujemy:
    item()?['Email']
    undefined
  4. Kolejnym krokiem jest dodanie akcji „Dołącz” (Join). Następnie należy wypełnić pola:

    Od – w tym miejscu z zawartości dynamicznej wybieramy Dane wyjściowe z akcji „Wybierz” (Select).

    Połącz przy użyciu – w tym miejscu wpisujemy średnik (;).

    undefined

  5. Naszym następnym krokiem będzie wysłanie wiadomości email do pobranych użytkowników z grupy SharePoint. Dodajemy akcję „Wyślij wiadomość e-mail (V2)”, a następnie wypełniamy pola:

    Do – z dynamicznej zawartości wybieramy opcję Dane wyjściowe z poprzedniej akcji „Dołącz” (Join).

    undefined

Jak dokonać importu danych z programu Excel na listę SharePoint?

Najczęściej spotykaną formą zapisu danych przez użytkownika jest otworzenie programu Excel oraz rozpoczęcie wypełniania arkusza. Jest to o wiele łatwiejsza forma oraz bardziej przyjazna dla osób, które z SharePointem nie miały wiele do czynienia.

Co zrobić w przypadku gdy dane zostały zapisane w arkuszu Excel, a my potrzebujemy je umieścić na liście SharePoint bez konieczności wpisywanie ich ręcznie? Na szczęście jest na to rozwiązanie, ponieważ możemy dokonać importu danych za pomocą Power Automate.

Zapytacie, jak to zrobić, jak dokonać takiego importu żeby się nie namęczyć? Już tłumaczę w poniższych punktach:

  1. Na samym początku należy wybrać Trigger (wyzwalacz), który będzie odpowiadał za uruchamianie przepływu Power Automate. W naszym przypadku będzie to umieszczenie pliku Excel w bibliotece SharePoint, czyli wybieramy wyzwalacz „Po utworzeniu pliku (tylko właściwości)”.

    Kolejno z listy rozwijanej wybieramy Adres witryny oraz Nazwę biblioteki, w której będą umieszczane arkusze Excel.

    undefined
  2. Nie chcemy, aby nasz proces importu działał statycznie, tylko na jednym określonym pliku, dlatego my zrobimy to dynamicznie. Jako kolejną akcję w przepływie wybieramy „Wyświetl listę wierszy w tabeli”, następnie wypełniamy pola: Lokalizacja, Biblioteka dokumentów, Plik, Tabela.

    I właśnie w tym momencie, w polu Plik z zawartości dynamicznej wybieramy opcję Full Path pochodzącą z naszego Triggera (wyzwalacza), aby nasz przepływ był dynamiczny i działał na każdym, nowo dodanym pliku do biblioteki dokumentów.

    Po kliknięciu opcji Wprowadź wartość niestandardową, w polu Tabela wpisujemy nazwę, którą nosi tabela w pliku Excel np. Tabela1. Od tej pory każda tabela, w każdym pliku Excel poddawanemu musi posiadać taka samą nazwę, aby proces działał poprawnie.

    undefined
  3. Teraz przyszła pora na dodanie akcji, która zapisze nam dane z pliku Excel na listę SharePoint.

    Aby wszystko miało ręce i nogi utworzymy pętlę „Zastosuj do każdego”, aby każdy element zawarty w pliku został poprawnie zapisany. W przypadku gdybyśmy nie utworzyli pętli import danych nie wykona się poprawnie.

    Jako dane wyjściowe z poprzednich kroków wybieramy z zawartości dynamicznej Value z akcji „Wyświetl listę wierszy w tabeli”.

    Następnie znajdując się w pętli dodajemy akcję „Utwórz element”. Wypełniamy wymagane pola jak Adres witryny, Nazwę listy. Pozostało nam wypełnienie kolumn listy SharePoint danymi z pliku Excel poprzez zawartość dynamiczną. Po kliknięciu w pole kolumny w akcji „Utwórz element” zostanie wyświetlone okno zawartości dynamicznych, aczkolwiek nie będzie w nim widocznych wartości kolumn z akcji „Wyświetl listę wierszy w tabeli”.

    Co należy zrobić, aby wypełnić pola kolumn listy SharePoint dynamiczną zawartością? Po kliknięciu w pole kolumny, przechodzimy do zakładki Wyrażenie i wpisujemy item()?['…'], w miejscu trzech kropek (…) wpisujemy nazwę kolumny na taką, która widnieje w tabeli w pliku Excel. Najlepiej zrobić to poprzez skopiowanie nazwy i wklejenie jej do wyrażenia w Power Automate. Analogicznie robimy tak w pozostałych kolumnach w akcji „Utwórz element”.
    item()?['...']
    undefinedundefined


Takim oto sposobem utworzyliśmy przepływ w Power Automate, którego zadaniem jest automatyzacja procesu zapisu danych z pliku Excel na listę SharePoint. Nie dość, że zostanie zaoszczędzony czas użytkownika, który miałby wypełniać dane ręcznie to i jeszcze jego nerwy nie zostaną naruszone.

Oczywiście opcjonalną opcją jest przekopiowanie danych z arkusza Excel za pomocą kombinacji przycisków CTRL + C, a następnie wklejenie ich na listę SharePoint w widoku siatki klikając CTRL + V.

Home