Microsoft 365 et Microsoft Graph Bibliothèque pour Python
Utiliser PIP:
pip install Office365-REST-Python-Client
Alternativement, la dernière version pourrait être directement installée via GitHub:
pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git
Pour les exemples suivants, des informations d'identification pertinentes peuvent être trouvées dans le portail Azure.
Étapes pour accéder:
Le client ClientContext
fournit la prise en charge d'un repos SharePoint hérité et d'OneDrive pour les API de repos commercial, la liste des versions prises en charge:
Les flux d'autheurs suivants sont pris en charge:
Cette méthode Auth est compatible avec SharePoint sur site et un modèle toujours pertinent dans SharePoint sur site en tant que SharePoint Online, les méthodes suivantes sont disponibles:
ClientContext.with_credentials(client_credentials)
ClientContext.with_client_credentials(client_id, client_secret)
Usage:
client_credentials = ClientCredential('{client_id}','{client_secret}')
ctx = ClientContext('{url}').with_credentials(client_credentials)
Documentation:
Exemple: connect_with_app_principal.py
Usage:
user_credentials = UserCredential('{username}','{password}')
ctx = ClientContext('{url}').with_credentials(user_credentials)
Exemple: connect_With_User_Credential.py
Documentation:
Exemple: connect_with_client_certificate.py
se connecter de manière interactive, c'est-à-dire via un navigateur local
Condition préalable:
Dans Azure Portal, configurez l'URI de redirection de votre "application mobile et de bureau" comme
http://localhost
.
Exemple: connect_interactive.py
Usage:
from office365 . sharepoint . client_context import ClientContext
ctx = ClientContext ( "{site-url}" ). with_interactive ( "{tenant-name-or-id}" , "{client-id}" )
me = ctx . web . current_user . get (). execute_query ()
print ( me . login_name )
Il existe deux approches disponibles pour effectuer des requêtes API:
ClientContext class
- Lorsque vous ciblez les ressources SharePoint telles que Web
, ListItem
et etc. (recommandée) from office365 . runtime . auth . user_credential import UserCredential
from office365 . sharepoint . client_context import ClientContext
site_url = "https://{your-tenant-prefix}.sharepoint.com"
ctx = ClientContext ( site_url ). with_credentials ( UserCredential ( "{username}" , "{password}" ))
web = ctx . web
ctx . load ( web )
ctx . execute_query ()
print ( "Web title: {0}" . format ( web . properties [ 'Title' ]))
ou alternativement via le chaînage de la méthode (aka interface fluide):
from office365 . runtime . auth . user_credential import UserCredential
from office365 . sharepoint . client_context import ClientContext
site_url = "https://{your-tenant-prefix}.sharepoint.com"
ctx = ClientContext ( site_url ). with_credentials ( UserCredential ( "{username}" , "{password}" ))
web = ctx . web . get (). execute_query ()
print ( "Web title: {0}" . format ( web . properties [ 'Title' ]))
SharePointRequest class
- où vous construisez des requêtes de repos (et aucun modèle n'est impliqué)
L'exemple montre comment lire les propriétés Web
:
import json
from office365 . runtime . auth . user_credential import UserCredential
from office365 . sharepoint . request import SharePointRequest
site_url = "https://{your-tenant-prefix}.sharepoint.com"
request = SharePointRequest ( site_url ). with_credentials ( UserCredential ( "{username}" , "{password}" ))
response = request . execute_request ( "web" )
json = json . loads ( response . content )
web_title = json [ 'd' ][ 'Title' ]
print ( "Web title: {0}" . format ( web_title ))
La liste des exemples:
Travailler avec des fichiers
Travailler avec des listes et des éléments de liste
Référer la section Exemples pour un autre scénario
La prise en charge des environnements SharePoint non standard est en cours de mise en œuvre. Actuellement pris en charge:
Pour activer l'authentification aux points de terminaison élevés GCC, ajoutez le paramètre environment='GCCH'
lorsque vous appelez la ClientContext class
avec .with_user_credentials
, .with_client_credentials
, ou .with_credentials
Exemple:
from office365 . sharepoint . client_context import ClientContext
client_credentials = ClientCredential ( '{client_id}' , '{client_secret}' )
ctx = ClientContext ( '{url}' ). with_credentials ( client_credentials , environment = 'GCCH' )
La liste des API prises en charge:
Étant donné que les API Outlook REST sont disponibles dans Microsoft Graph et le point de terminaison de l'API Outlook, les clients suivants sont disponibles:
GraphClient
qui cible la version Outlook API v2.0
( préférable de nos jours, référez-vous à la transition à l'API Outlook REST basée sur Microsoft Graph pour un détail)OutlookClient
qui cible la version Outlook API v1.0
(non recommandée pour l'utilisation puisque la version v1.0
est en cours de dépréciation.)La bibliothèque d'authentification Microsoft (MSAL) pour Python qui vient comme une dépendance est utilisée comme bibliothèque par défaut pour obtenir des jetons pour appeler l'API Microsoft Graph.
Utilisation de la bibliothèque d'authentification Microsoft (MSAL) pour Python
Remarque: le jeton d'accès est acquis via le flux d'identification client dans les exemples fournis. D'autres formes d'acquisition de jetons peuvent être trouvées ici: https://msal-python.readthedocs.io/en/latest/
import msal
from office365 . graph_client import GraphClient
def acquire_token ():
"""
Acquire token via MSAL
"""
authority_url = 'https://login.microsoftonline.com/{tenant_id_or_name}'
app = msal . ConfidentialClientApplication (
authority = authority_url ,
client_id = '{client_id}' ,
client_credential = '{client_secret}'
)
token = app . acquire_token_for_client ( scopes = [ "https://graph.microsoft.com/.default" ])
return token
client = GraphClient ( acquire_token )
Mais en termes d'authentification de l'API Microsoft Graph, d'autres bibliothèques conformes aux spécifications OAuth telles que ADAL sont également prises en charge.
Utilisation d'Adal Python
Usage
import adal
from office365 . graph_client import GraphClient
def acquire_token_func ():
authority_url = 'https://login.microsoftonline.com/{tenant_id_or_name}'
auth_ctx = adal . AuthenticationContext ( authority_url )
token = auth_ctx . acquire_token_with_client_credentials (
"https://graph.microsoft.com" ,
"{client_id}" ,
"{client_secret}" )
return token
client = GraphClient ( acquire_token_func )
L'exemple montre comment envoyer un e-mail via le point de terminaison Microsoft Graph.
Remarque: le jeton d'accès est acquis via le flux d'identification du client
from office365 . graph_client import GraphClient
client = GraphClient ( acquire_token_func )
client . me . send_mail (
subject = "Meet for lunch?" ,
body = "The new cafeteria is open." ,
to_recipients = [ "[email protected]" ]
). execute_query ()
Exemples et scénarios supplémentaires:
Reportez-vous à la section Exemples pour d'autres scénarios
Référence de l'API graphique OneDrive
La bibliothèque d'authentification Microsoft (MSAL) pour Python qui vient comme une dépendance est utilisée pour obtenir un jeton
import msal
def acquire_token_func ():
"""
Acquire token via MSAL
"""
authority_url = 'https://login.microsoftonline.com/{tenant_id_or_name}'
app = msal . ConfidentialClientApplication (
authority = authority_url ,
client_id = '{client_id}' ,
client_credential = '{client_secret}'
)
token = app . acquire_token_for_client ( scopes = [ "https://graph.microsoft.com/.default" ])
return token
L'exemple montre comment énumérer et imprimer l'URL du lecteur qui correspond à list available drives
Remarque: le jeton d'accès est acquis via le flux d'identification du client
from office365 . graph_client import GraphClient
tenant_name = "contoso.onmicrosoft.com"
client = GraphClient ( acquire_token_func )
drives = client . drives . get (). execute_query ()
for drive in drives :
print ( "Drive url: {0}" . format ( drive . web_url ))
from office365 . graph_client import GraphClient
client = GraphClient ( acquire_token_func )
# retrieve drive properties
drive = client . users [ "{user_id_or_principal_name}" ]. drive . get (). execute_query ()
# download files from OneDrive into local folder
with tempfile . TemporaryDirectory () as path :
download_files ( drive . root , path )
où
def download_files ( remote_folder , local_path ):
drive_items = remote_folder . children . get (). execute_query ()
for drive_item in drive_items :
if drive_item . file is not None : # is file?
# download file content
with open ( os . path . join ( local_path , drive_item . name ), 'wb' ) as local_file :
drive_item . download ( local_file ). execute_query ()
Exemples supplémentaires:
Reportez-vous à la section Exemples OneDrive pour plus d'exemples.
La bibliothèque d'authentification Microsoft (MSAL) pour Python qui vient comme une dépendance est utilisée pour obtenir un jeton
L'exemple montre comment créer une nouvelle équipe sous un groupe qui correspond à Create team
from office365 . graph_client import GraphClient
client = GraphClient ( acquire_token_func )
new_team = client . groups [ "{group-id}" ]. add_team (). execute_query_retry ()
Exemples supplémentaires:
Reportez-vous à la section Exemples pour d'autres scénarios
La bibliothèque prend en charge l'API OneNote en termes d'appels vers les cahiers, sections et pages de l'onenote d'un utilisateur dans un compte personnel ou organisation
Exemple: créer une nouvelle page
from office365 . graph_client import GraphClient
client = GraphClient ( acquire_token_func )
files = {}
with open ( "./MyPage.html" , 'rb' ) as f ,
open ( "./MyImage.png" , 'rb' ) as img_f ,
open ( "./MyDoc.pdf" , 'rb' ) as pdf_f :
files [ "imageBlock1" ] = img_f
files [ "fileBlock1" ] = pdf_f
page = client . me . onenote . pages . add ( presentation_file = f , attachment_files = files ). execute_query ()
L'exemple montre comment créer une nouvelle tâche de planificateur qui correspond à Create plannerTask
:
from office365 . graph_client import GraphClient
client = GraphClient ( acquire_token_func )
task = client . planner . tasks . add ( title = "New task" , planId = "--plan id goes here--" ). execute_query ()
Les bibliothèques suivantes seront installées lorsque vous installez la bibliothèque client:
Python Ide Pycharm
puissant de Jetbrains
.