Sharepoint – pobieranie i uploadowanie plików z wykorzystaniem Python i Power BI

Sharepoint jest powszechną usługą w której użytkownicy organizacji przechowują pliki. Zautomatyzować pobieranie i wysyłanie plików na Sharepoint można za pomocą języka Python, a bezpośrednio łączyć się z plikiem można za pomocą Power BI 🙂

Pobieranie plików z Sharepoint

Jeśli nie mamy zainstalowanych bibliotek, wykonujemy to teraz:

$pip install Office365-REST-Python-Client

Wczytujemy biblioteki

from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.files.file import File

Podajemy dane do autoryzacji

ctx_auth = AuthenticationContext('https://domena.sharepoint.com/sites/DawidShare')
ctx_auth.acquire_token_for_user('mail', 'hasło)
ctx = ClientContext('https://domena.sharepoint.com/sites/DawidShare', ctx_auth)

Otwieramy plik z lokalizacji Sharepoint i pobieramy jego content

response = File.open_binary(ctx, "/sites/DawidShare/Shared Documents/Skoroszyt.xlsx")

Podajemy lokalną ścieżkę zapisu:

path = "sciezka/nazwa_pliku.xlsx"

Zapisujemy content do pliku

with open(path, "wb") as local_file:
local_file.write(response.content)

Upload plików do Sharepoint

Wczytujemy biblioteki i autoryzujemy dostęp

from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.files.file import File

ctx_auth = AuthenticationContext('https://domena.sharepoint.com/sites/DawidShare')
ctx_auth.acquire_token_for_user('mail', 'haslo')
ctx = ClientContext('https://domena.sharepoint.com/sites/DawidShare', ctx_auth)

Podajemy lokalizację zapisu na Sharepoint:

target_folder = ctx.web.get_folder_by_server_relative_url('/sites/DawidShare/Shared Documents/')

Otwieramy plik lokalny i zapisujemy w sieciowej lokalizacji:

with open(sciezka/nazwa_pliku.xlsx', 'rb') as content_file:
file_content = content_file.read()
target_folder.upload_file('nazwa_pliku.xlsx', file_content).execute_query()

Pobieranie danych z pliku z Sharepoint w Power BI

Z zakładki „Pobierz dane” wybieramy opcję „Internet”

Wpisujemy adres URL

Dalej musimy wybrać sposób w jaki się zalogować. W polu „Wybierz poziom, na którym chcesz zastosować ustawienia” wybieramy naszą konkretną stronę z plikiem, ponieważ możemy nie mieć dostępu do ogólnej wersji strony Sharepoint organizacji. Klikamy „Połącz” i gotowe 🙂

BONUS: tworzenie folderu na Sharepoint z użyciem Python

from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.files.file import File

ctx_auth = AuthenticationContext('https://domena.sharepoint.com/sites/DawidShare')
ctx_auth.acquire_token_for_user('mail', 'haslo')
ctx = ClientContext('https://domena.sharepoint.com/sites/DawidShare', ctx_auth)

def create_folder(dir_name: str):
if dir_name:
result = ctx.web.folders.add(f'Shared Documents/{dir_name}').execute_query()
if result:
relative_url = f'Shared Documents/{dir_name}'
return relative_url
create_folder('nowy_folder')