importargparsefromoffice365.sharepoint.client_contextimportClientContextfromtests.settingsimportcert_path,cert_thumbprint,client_id,team_site_url,tenantPREVIEW_LEN=128def_preview(value:str)->str:"""First PREVIEW_LEN characters of a content block, with an ellipsis when truncated."""returnvalue[:PREVIEW_LEN]+("..."iflen(value)>PREVIEW_LENelse"")defmain():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_contentor""layout=page.layout_web_parts_contentor""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()