Załóżmy, że co tydzień na maila otrzymujemy maile z załącznikami PDF, zawierającymi pewne raporty. Chcielibyśmy połączyć te pliki i stworzyć z nich zbiorczy raport.
Problem jest taki, że tych maili, a zatem załączników do połączenia może być różna liczba – czasem nawet idąca w setki. Wyglądać to może tak:
Same raporty mają co do zasady taką samą strukturę: mogą się co najwyżej różnić kolejnością kolumn.
Pocztę mamy natomiast na serwerze Exchange.
Temat wydaje się z pozoru trudny, ale na spokojnie jest do zrobienia za pomocą Power Query. W tym artykule pokażę jak.
Podłączanie się do poczty (Exchange)
Załóżmy, że chcemy stworzyć raport w Excelu. Z poziomu tego programu wejdźmy zatem do menu Dane → Pobierz dane → Z usług online → Z usługi Microsoft Exchange Online.
Power Query poprosi nas o podanie adresu e-mailowego na serwerze Exchange, do którego chcemy się podłączyć:
Należy oczywiście podać adres oraz zalogować się odpowiednimi poświadczeniami.
Po udanym logowaniu wyświetli nam się Nawigator, w którym należy wybrać podłączenie się do poczty, czyli Mail, a następnie kliknąć przycisk Przekształć dane:
Niezbędne przekształcenia na danych
Zostanie utworzone zapytanie Power Query o nazwie Mail (można ją w dowolnej chwili zmienić), zawierające multum informacji o naszych mailach. Najważniejsze dla nas na tę chwilę to ich lokalizacja, czyli folder, w którym są maile, zawierające raporty do połączenia.
W naszym przypadku maile te znajdują się w Skrzynce odbiorczej. Jako kolejny krok zapytania dokonajmy zatem filtrowania kolumny Folder Path po tej wartości, a zatem:
Teraz widzimy maile ze Skrzynki odbiorczej, zatem idąc dalej – zostawmy tylko te, które posiadają załączniki. Zakładamy, że wszystkie maile z załącznikami w tym folderze to interesujące nas maile. Dokonajmy zatem kolejnego filtrowania, tym razem po kolumnie HasAttachments i wybierzmy w niej True:
Świetnie! Teraz to naprawdę są tylko interesujące nas maile. Możemy zatem zostawić tylko interesującą nas kolumną, czyli Attachments. Usuńmy więc inne, klikając kolumnę Attachments prawym przyciskiem myszy i wybierając Usuń inne kolumny:
Przykładowa tabela w kolumnie Attachments, a zatem nasz przykładowy załącznik wygląda tak:
Z powyższego interesuje nas tylko nazwa pliku (Name) oraz sam załącznik, czyli AttachmentContent. Jedynie więc te dwie kolumny zostawimy podczas operacji łączenia. Kliknij więc dwie strzałki po prawej stornie kolumny Attachments, wybierz z filtrowanie te dwie kolumny i naciśnij OK:
Otrzymany efekt to „wypakowane” do kolejnej tabeli pliki oraz ich nazwy:
Możemy od razu pozbyć się rozszerzeń plików (.pdf) poprzez dokonanie prostej zamiany: kliknij prawym przyciskiem myszy na kolumnę Name i wybierz opcję Zamień wartości:
Można od razu tez podmienić nazwę kolumny Name na Dział.
Automatyczne łączenie plików PDF
Teraz pozostaje już tylko połączyć pliki. Najprościej będzie skorzystać z dwóch strzałek w dół przy kolumnie AttachmentContent:
W nawigatorze w kolejnym kroku wybieramy obiekt, który ma zostać połączony. W przypadku naszych plików będzie to obiekt Table001:
Po zatwierdzeniu do naszego zapytania zostanie dodanych kilka nowych kroków. Dojdą również nowe zapytania – wszystkie wygenerowana automatycznie.
Jedyną rzeczą, którą bym jeszcze zmieniła, to zachowałabym kolumnę Dział. Po drodze zaginęła w akcji ;(. Aby to zrobić, edytuję krok Usunięto inne kolumny1 o tak:
= Table.SelectColumns(#"Wywołaj funkcję niestandardową1", {"Przekształć plik", "Dział"})
I to tyle. Po załadowaniu wszystkiego do Excela, np. do tabeli przestawnej, na połączonych danych można już robić ciekawe analizy, np.: łączne zarobki pracowników poszczególnych działów:
I to by było tyle. Jak widać, jeśli znamy funkcjonalność łączenia plików z folderu, to bez problemu poradzimy sobie z połączeniem załączników z maila na serwerze Exchange 😊.
I film na Youtubie, gdzie pokazuję powyższe rozwiązanie:
0 komentarzy