Skip to content

Site activity analytics — daily views and edits over a rolling window.

Permissions

Requires delegated permission Sites.Read.All.

Reference

View source

import argparse
from datetime import datetime, timedelta, timezone

from office365.graph_client import GraphClient
from tests.settings import client_id, client_secret, team_site_url, tenant


def main():
    parser = argparse.ArgumentParser(description="Site activity analytics — daily views and edits over a rolling window")
    parser.add_argument("--site-url", default=team_site_url, help="site URL to inspect")
    parser.add_argument("--days", type=int, default=30, help="rolling window length in days")
    args = parser.parse_args()

    client = (
        GraphClient(tenant=tenant)
        .with_client_secret(client_id, client_secret)
        .require_application_permission("Sites.Read.All")
    )

    site = client.sites.get_by_url(args.site_url).get().execute_query()

    end = datetime.now(timezone.utc)
    start = end - timedelta(days=args.days)
    stats = site.get_activities_by_interval(start, end, "day").execute_query()
    print(f"Activity for {site.display_name} (last {args.days} days):")
    for s in stats:
        views = s.access.viewCount
        edits = s.edit.viewCount
        print(f"  {s.start_date_time:%Y-%m-%d}  views={views}  edits={edits}")


if __name__ == "__main__":
    main()

← Back to OneDrive / SharePoint v2 — Sites