|

|  How to Integrate Microsoft Graph API to Access Planner Tasks in Python

How to Integrate Microsoft Graph API to Access Planner Tasks in Python

October 31, 2024

Learn to integrate Microsoft Graph API with Python and seamlessly access Planner tasks. Follow this guide for easy integration and task management solutions.

How to Integrate Microsoft Graph API to Access Planner Tasks in Python

 

Integrate Microsoft Graph API to Access Planner Tasks

 

  • Start by registering your application in the Azure portal. Acquire the client ID (App ID), tenant ID, and client secret needed for authentication with Microsoft Graph API.
  •  

  • Install the `requests` library in your Python environment since it will be needed to send HTTP requests to the Graph API.

 

pip install requests

 

  • Use OAuth 2.0 to acquire an access token that will allow your app to make secure calls to Microsoft Graph. This typically involves sending a POST request to the token endpoint.

 

import requests

def get_token(tenant_id, client_id, client_secret):
    url = f"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token"
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded'
    }
    data = {
        'client_id': client_id,
        'scope': 'https://graph.microsoft.com/.default',
        'client_secret': client_secret,
        'grant_type': 'client_credentials'
    }
    response = requests.post(url, headers=headers, data=data)
    return response.json().get("access_token")

 

  • Select the required Microsoft Graph API permissions, such as `Group.Read.All` and `Tasks.ReadWrite`, through the Azure portal to enable proper access control.
  •  

  • Once you have the access token, construct an HTTP GET request to the Microsoft Graph API endpoint for Planner tasks. For example, to get all tasks in a specific planner plan:

 

def get_planner_tasks(access_token, plan_id):
    url = f"https://graph.microsoft.com/v1.0/planner/plans/{plan_id}/tasks"
    headers = {
        'Authorization': f'Bearer {access_token}',
        'Content-Type': 'application/json'
    }
    response = requests.get(url, headers=headers)
    return response.json()

tenant_id = 'your-tenant-id'
client_id = 'your-client-id'
client_secret = 'your-client-secret'
plan_id = 'specific-plan-id'

access_token = get_token(tenant_id, client_id, client_secret)
tasks = get_planner_tasks(access_token, plan_id)
print(tasks)

 

  • Handle the JSON response effectively to parse through the tasks and extract the required information such as task title, details, and status.
  •  

  • Consider implementing pagination if you're dealing with a large number of results, as Graph API responses can be paginated and include a `@odata.nextLink` for additional data.

 

def get_all_tasks(access_token, plan_id):
    tasks = []
    url = f"https://graph.microsoft.com/v1.0/planner/plans/{plan_id}/tasks"
    headers = {
        'Authorization': f'Bearer {access_token}'
    }

    while url:
        response = requests.get(url, headers=headers).json()
        tasks.extend(response.get('value', []))
        url = response.get('@odata.nextLink')
    
    return tasks

all_tasks = get_all_tasks(access_token, plan_id)
#print task titles
for task in all_tasks:
    print(task['title'])

 

  • Ensure proper error handling is in place for network issues, authentication problems, or any other potential HTTP error responses from the API.