Dyskusja -

0

Dyskusja -

0

Zmiana nazwy załączników na liście SharePoint przy pomocy Power Automate

sharepoint_attachements_name

W artykule opisałem, w jaki sposób w PowerAutomate stworzyć flow zmieniający nazwę załącznikówprzypisanych do rekordu znajdującego się na liście SharePoint. W opisanym przykładzie jako wyzwalacz wykorzystuję PowerApps. W podanych formułach wykorzystałem angielską składnię formuł (przecinki zamiast średników).

Wyobraźmy sobie scenariusz, w którym korzystamy z aplikacji PowerApps połączonej z listą SharePoint, która służy nam do zapisywania wydatków w trakcie podróży służbowej. Każdy z wydatków musimy udokumentować dołączając odpowiedni plik do wniosku.

Ze względu na wymagania biznesowe, chcemy, żeby każdy załącznik miał nazwę zgodną ze wzorcem:

IDrekordu_PierwotnaNazwaZalacznika

Problem w tym, że użytkownicy aplikacji czasami o tym zapominają i dodają załącznik niespełniający tego kryterium. Jak zatem osiągnąć zamierzony przez nas efekt?

Jedną z metod jest wykorzystanie Power Automate i utworzenie flow zmieniającego nazwę załącznika na liście. W naszym przypadku flow jest wywoływany z poziomu Power Apps za pomocą funkcji Run. Jako parametr przekazujemy ID rekordu, którego dotyczy zmiana.

W aplikacji do zapisu załącznika, wykorzystujemy formularz i funkcję SubmitForm, a następnie korzystamy z funkcji Patch i metody LastSubmit do zapisania danych do konkretnego rekordu.

Tak zapisany rekord przechodzi przez kilka etapów akceptacji, na których do wniosku mogą być dodawane kolejne załączniki.

Żeby flow działał od początku (a więc przy dodaniu kompletnie nowego rekordu), pomiędzy funkcją SubmitForm a funkcją uruchamiającąflow, musimy dodać funkcję UpdateContext. Przypisze ona ID rekordu, który wcześniej dodaliśmy do zmiennej lokalnejlocWniosekID.

Nasza formuła może wyglądać następująco:

SubmitForm(Wniosek); // Wysłanie wniosku do listy SharePoint

UpdateContext({locWniosekID: Wniosek.LastSubmit.ID}); // Przypisanie do zmiennej ID wniosku na podstawie LastSubmit

’ChangeAttachmentName’.Run(locWniosekID) // Uruchomenieflow

Zajmijmy się teraz przygotowaniem flow, który będzie zmieniał nazwę załączników.

Change SharePoint attachment name using Power Automate

W artykule opisałem, w jaki sposób w PowerAutomate stworzyć flow zmieniający nazwę załącznikówprzypisanych do rekordu znajdującego się na liście SharePoint. W opisanym przykładzie jako wyzwalacz wykorzystuję PowerApps. W podanych formułach wykorzystałem angielską składnię formuł (przecinki zamiast średników).

Wyobraźmy sobie scenariusz, w którym korzystamy z aplikacji PowerApps połączonej z listą SharePoint, która służy nam do zapisywania wydatków w trakcie podróży służbowej. Każdy z wydatków musimy udokumentować dołączając odpowiedni plik do wniosku.

Ze względu na wymagania biznesowe, chcemy, żeby każdy załącznik miał nazwę zgodną ze wzorcem:

IDrekordu_PierwotnaNazwaZalacznika

Problem w tym, że użytkownicy aplikacji czasami o tym zapominają i dodają załącznik niespełniający tego kryterium. Jak zatem osiągnąć zamierzony przez nas efekt?

Jedną z metod jest wykorzystanie Power Automate i utworzenie flow zmieniającego nazwę załącznika na liście. W naszym przypadku flow jest wywoływany z poziomu Power Apps za pomocą funkcji Run. Jako parametr przekazujemy ID rekordu, którego dotyczy zmiana.

W aplikacji do zapisu załącznika, wykorzystujemy formularz i funkcję SubmitForm, a następnie korzystamy z funkcji Patch i metody LastSubmit do zapisania danych do konkretnego rekordu.

Tak zapisany rekord przechodzi przez kilka etapów akceptacji, na których do wniosku mogą być dodawane kolejne załączniki.

Żeby flow działał od początku (a więc przy dodaniu kompletnie nowego rekordu), pomiędzy funkcją SubmitForm a funkcją uruchamiającąflow, musimy dodać funkcję UpdateContext. Przypisze ona ID rekordu, który wcześniej dodaliśmy do zmiennej lokalnejlocWniosekID.

Nasza formuła może wyglądać następująco:

SubmitForm(Wniosek); // Wysłanie wniosku do listy SharePoint

UpdateContext({locWniosekID: Wniosek.LastSubmit.ID}); // Przypisanie do zmiennej ID wniosku na podstawie LastSubmit

’ChangeAttachmentName’.Run(locWniosekID) // Uruchomenieflow

Zajmijmy się teraz przygotowaniem flow, który będzie zmieniał nazwę załączników.

Zmiana nazwy załącznika przy pomocy Power Automate

Tworzymy flowChangeAttachmentNamei jako typ wybieramy instant. Jako wyzwalacz zaznaczamy PowerApps.

imaged - Zmiana nazwy załączników na liście SharePoint przy pomocy Power Automate

Pierwszą akcją jest inicjalizacjazmiennej o nazwie wniosekID, typie String i wartości pobranej z aplikacji (Ask in PowerApps).

Następnie pobieramy rekord, którego załączniki będziemy zmieniać (akcja Pobierz rekord/Get item):

imagee - Zmiana nazwy załączników na liście SharePoint przy pomocy Power Automate

W moim wypadku to lista Wniosek w witrynie SandboxIgora.

W kolejnym kroku korzystamy z akcji Pobierz załączniki (Get attachments) jako Id wybierając wcześniej zainicjalizowaną zmienną wniosekID:

imagef - Zmiana nazwy załączników na liście SharePoint przy pomocy Power Automate

Następnie tworzymy pętlę Zastosuj do każdego (Apply to each) z warunkiem „DisplayNamestarts with wniosekID”.

image10 - Zmiana nazwy załączników na liście SharePoint przy pomocy Power Automate

Dzięki temu sprawdzamy czy nazwa załącznika zaczyna się od ID wniosku (możliwy jest scenariusz, w którym użytkownik zapisał wniosek zgodnie z opisanymi wcześniej wymogami).

W rozgałęzieniu warunku mamy:

image11 - Zmiana nazwy załączników na liście SharePoint przy pomocy Power Automate

Jeśli nazwa załącznika zaczyna się od ID wniosku, nic z takim załącznikiem nie robimy.

Jeśli jest inaczej, pobieramy zawartość załącznika (Get attachment content) i dodajemy załącznik, jako File Name wpisując formułę:

concat(variables(’wniosekID’), '_’, items(’Apply_to_each’)?[’DisplayName’])

(W maju 2021, kiedy powstaje ten artykuł musiałem przekopiować “items(’Apply_to_each’)?[’DisplayName’]”, ponieważ w wyrażeniach nie miałem możliwości dodania go z zawartości dynamicznej – trzeba tylko uważać na znak “@”).

W przypadku załącznika, który do tej pory nazywał się train_ticket.pdf otrzymamy nazwę 1_train_ticket.pdf (zakładając, że pracujemy na rekordzie o ID równym 1).

Załóżmy, że startowaliśmy z trzy załącznikami do rekordu o ID równym 1:

train_ticket.pdf

hotel.pdf

lunch.pdf

W tej chwili powinniśmy mieć sześć załączników:

train_ticket.pdf

hotel.pdf

lunch.pdf

1_train_ticket.pdf

2_hotel.pdf

3_lunch.pdf

Poprzednio wykorzystana pętla jedynie dodała nowe pliki z odpowiednią nazwą. Musimy teraz usunąć załączniki niespełniające kryterium nazewnictwa. Robimy to tworząc dodatkową pętlę:

image12 - Zmiana nazwy załączników na liście SharePoint przy pomocy Power Automate

Tym razem do załączników, których nazwa nie zaczyna się od ID rekordu po prostu stosujemy akcję Usuń załącznik (Deleteattachment).

Po wykonaniu się pętli do rekordu o ID 1 powinniśmy mieć trzy załączniki:

1_train_ticket.pdf

2_hotel.pdf

3_lunch.pdf

Podsumowanie

Powyższy przykład nie jest jedynym sposobem na zmianę nazwy załącznika.

Jako wyzwalacz moglibyśmy również wykorzystać Whenanitemiscreated, ale nasz scenariusz zakładał, że wniosek może być edytowany na kolejnych etapach akceptacji, i na tych etapach mogą pojawiać się załączniki, których na początku nie było.

Jak zatemsprawdzić, czy pojawił się nowy załącznik?

Musimy wprowadzić drobną modyfikację w Power Apps. Na właściwościOnAddFile karty załącznika dodajemy funkcję:

UpdateContext({fileWasAdded: true})

a na właściwości OnSelect przycisku wysyłającego Patch do listy dodajemy:

If(fileWasAdded, 'ChangeAttachmentName’.Run(selectedItem.ID))

W tym wypadku “selectedItem” odnosi się do rekordu wybranego z galerii na poprzednim ekranie.

Dzięki powyższej zmianie, mamy pewność, że flow uruchomi się tylko w momencie, w którym rzeczywiście dodamy nowy załącznik do rekordu na dalszych etapach akceptacji.

Developico

Developico is a group of people with passion to technology. Especially to Low-Code / No-Code solutions.

0 komentarzy

Wyślij komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Ciekawe zastosowania Power Platform

Ciekawe zastosowania Power Platform

If it’s not the first time you’ve encountered terms: Power Platform, Power Apps, Power Automate, but you don’t have a clue what to associate them with, you’re at the right place!

However, if you see them for the first time – I hope that my article will plant a seed of curiosity in a universally understood processes automation.