Microsoft SharePoint client Python package that uses the requests library
Project description
sharepointlib
Package Description
Microsoft SharePoint client Python package that uses the requests library.
[!IMPORTANT]
This packages uses pydantic~=1.0!
Usage
from a script:
import sharepointlib
import logging
import pandas as pd
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s")
client_id = "123..."
tenant_id = "456..."
client_secret = "xxxx"
sp_domain = "companygroup.sharepoint.com"
sp_site_name = "My Site"
sp_site_id = "companygroup.sharepoint.com,1233124124"
sp_site_drive_id = "b!1234567890"
# Initialize SharePoint client
sharepoint = sharepointlib.SharePoint(client_id=client_id,
tenant_id=tenant_id,
client_secret=client_secret,
sp_domain=sp_domain)
# Gets the site ID for a given site name
response = sharepoint.get_site_info(name=sp_site_name)
if response.status_code == 200:
print(response.content["id"])
df = pd.DataFrame([response.content])
print(df)
# Gets the hostname and site details for a specified site ID
response = sharepoint.get_hostname_info(site_id=sp_site_id)
if response.status_code == 200:
df = pd.DataFrame([response.content])
print(df)
Drives:
# Gets a list of the Drive IDs for a given site ID
response = sharepoint.list_drives(site_id=sp_site_id)
if response.status_code == 200:
df = pd.DataFrame(response.content)
print(df)
# Gets the folder ID for a specified folder within a drive ID
response = sharepoint.get_dir_info(drive_id=sp_site_drive_id,
path="Sellout/Support")
if response.status_code == 200:
df = pd.DataFrame([response.content])
print(df)
# List content (files and folders) of a specific folder
response = sharepoint.list_dir(drive_id=sp_site_drive_id,
path="Sellout/Support")
if response.status_code == 200:
df = pd.DataFrame(response.content)
print(df)
# Creates a new folder in a specified drive ID
response = sharepoint.create_dir(drive_id=sp_site_drive_id,
path="Sellout/Support",
name="Archive")
if response.status_code in (200, 201):
df = pd.DataFrame([response.content])
print(df)
response = sharepoint.create_dir(drive_id=sp_site_drive_id,
path="Sellout/Support",
name="Test")
if response.status_code in (200, 201):
df = pd.DataFrame([response.content])
print(df)
# Deletes a folder from a specified drive ID
response = sharepoint.delete_dir(drive_id=sp_site_drive_id,
path="Sellout/Support/Test")
if response.status_code in (200, 204):
print("Folder deleted successfully")
# Renames a folder in a specified drive ID
response = sharepoint.rename_folder(drive_id=sp_site_drive_id,
path="Sellout/Support",
new_name="Old")
if response.status_code == 200:
df = pd.DataFrame([response.content])
print(df)
# Retrieves information about a specific file in a drive ID
response = sharepoint.get_file_info(drive_id=sp_site_drive_id,
filename="Sellout/Support/Sellout.xlsx")
if response.status_code in (200, 202):
print(response.content.id)
df = pd.DataFrame([response.content])
print(df)
# Copy a file from one folder to another within the same drive ID
response = sharepoint.copy_file(drive_id=sp_site_drive_id,
filename="Sellout/Support/Archive/My Book.xlsx",
target_path="Sellout/Support/",
new_name="My Book Copy.xlsx")
if response.status_code in (200, 202):
print("File copied successfully")
# Moves a file from one folder to another within the same drive ID
response = sharepoint.move_file(drive_id=sp_site_drive_id,
filename="Sellout/Support/Book1.xlsx",
target_path="Sellout/Support/Archive/",
new_name="My Book.xlsx")
if response.status_code == 200:
df = pd.DataFrame([response.content])
print(df)
# Deletes a file from a specified drive ID
response = sharepoint.delete_file(drive_id=sp_site_drive_id,
filename="Sellout/Sellout.xlsx")
if response.status_code in (200, 204):
print("File deleted successfully")
# Renames a file in a specified drive ID.
response = sharepoint.rename_file(drive_id=sp_site_drive_id,
filename="Sellout/Support/Archive/Sellout.xlsx",
new_name="Sellout_New_Name.xlsx")
if response.status_code == 200:
df = pd.DataFrame([response.content])
print(df)
# Downloads a file from a specified remote path in a drive ID to a local path
# Examples for local_path (databricks):
# local_path=r"/Workspace/Users/admin@admin.com/Sellout.xlsm"
# local_path=r"/Volumes/lakehouse/sadp/Sellout.xlsm"
response = sharepoint.download_file(drive_id=sp_site_drive_id,
remote_path=r"Sellout/Support/Sellout.xlsx",
local_path=r"C:\Users\admin\Downloads\Sellout.xlsx")
if response.status_code == 200:
print("File downloaded successfully")
# Downloads all files from a specified remote path in a drive ID to a local path
# Examples for local_path (databricks):
# local_path=r"/Workspace/Users/admin@admin.com/"
# local_path=r"/Volumes/lakehouse/sadp/"
response = sharepoint.download_all_files(drive_id=sp_site_drive_id,
remote_path=r"Sellout/Support",
local_path=r"C:\Users\admin\Downloads")
if response.status_code == 200:
df = pd.DataFrame(response.content)
display(df) # print(df)
# Downloads an Excel file from SharePoint directly into memory and loads it into a Pandas DataFrame
from io import BytesIO
response = sharepoint.download_file_to_memory(drive_id=sp_site_drive_id,
remote_path="Sellout/Support/Sellout.xlsx")
if response.status_code == 200 and response.content is not None:
excel_data = BytesIO(response.content)
df = pd.read_excel(excel_data)
print(df)
# Uploads a file to a specified remote path in a SharePoint drive ID
response = sharepoint.upload_file(drive_id=sp_site_drive_id,
local_path=r"C:\Users\admin\Downloads\Sellout.xlsx",
remote_path=r"Sellout/Support/Archive/Sellout.xlsx")
if response.status_code in (200, 201):
df = pd.DataFrame([response.content])
print(df)
Installation
Install python and pip if you have not already.
Then run:
pip install pip --upgrade
For production:
pip install sharepointlib
This will install the package and all of it's python dependencies.
If you want to install the project for development:
git clone https://github.com/aghuttun/sharepointlib.git
cd sharepointlib
pip install -e ".[dev]"
To test the development package: Testing
License
BSD License (see license file)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters