Skip to content

Get the canvas and layout web part content of a site page.

Reference

View source

import argparse

from office365.sharepoint.client_context import ClientContext
from tests.settings import cert_path, cert_thumbprint, client_id, team_site_url, tenant

PREVIEW_LEN = 128


def _preview(value: str) -> str:
    """First PREVIEW_LEN characters of a content block, with an ellipsis when truncated."""
    return value[:PREVIEW_LEN] + ("..." if len(value) > PREVIEW_LEN else "")


def main():
    parser = argparse.ArgumentParser(description="Get a site page's canvas and layout content")
    parser.add_argument("--file-name", default="Home.aspx", help="page file name (default: Home.aspx)")
    args = parser.parse_args()

    ctx = ClientContext(team_site_url).with_client_certificate(
        tenant, client_id=client_id, thumbprint=cert_thumbprint, cert_path=cert_path
    )
    page = ctx.site_pages.pages.get_by_name(args.file_name).execute_query()

    canvas = page.canvas_content or ""
    layout = page.layout_web_parts_content or ""
    print(f"Canvas content ({len(canvas)} chars):")
    print(_preview(canvas))
    print(f"\nLayout web parts content ({len(layout)} chars):")
    print(_preview(layout))


if __name__ == "__main__":
    main()

← Back to Modern (Site) Pages