Skip to content

Find tasks due within a specified number of days.

Permissions

Requires delegated permission Tasks.Read.

Reference

View source

import argparse
from datetime import datetime, timedelta, timezone

from office365.graph_client import GraphClient
from tests.settings import client_id, password, tenant, username


def main():
    parser = argparse.ArgumentParser(description="Show tasks due within the next N days")
    parser.add_argument("--days", type=int, default=7, help="look ahead this many days (default 7)")
    args = parser.parse_args()

    client = GraphClient(tenant=tenant).with_username_and_password(client_id, username, password)
    cutoff = datetime.now(timezone.utc) + timedelta(days=args.days)
    cutoff_utc = cutoff.strftime("%Y-%m-%dT%H:%M:%SZ")

    for lst in client.me.todo.lists.get().execute_query():
        for task in lst.tasks.filter(f"dueDateTime/dateTime le '{cutoff_utc}'").get().execute_query():
            print(f"  [{lst.display_name}]  {task.title:50s}  due={task.due_date_time}")


if __name__ == "__main__":
    main()

← Back to Microsoft To-Do