importargparseimportsysfromoffice365.sharepoint.client_contextimportClientContextfromoffice365.sharepoint.navigation.nodes.creationinformationimportNavigationNodeCreationInformationfromtests.settingsimportcert_path,cert_thumbprint,client_id,site_url,tenantdefmain():parser=argparse.ArgumentParser(description="Add a child node under a Quick Launch node")parser.add_argument("--parent-title",default="",help="parent node title (default: first node)")parser.add_argument("--title",default="Child page",help="title of the new child node")parser.add_argument("--url",default="https://learn.microsoft.com/en-us/sharepoint/dev/apis/navigation-api-reference",help="URL the child node links to (external links are safest)",)args=parser.parse_args()ctx=ClientContext(site_url).with_client_certificate(tenant,client_id=client_id,thumbprint=cert_thumbprint,cert_path=cert_path)nav=ctx.web.navigation.quick_launch.get().execute_query()ifnotnav:sys.exit("No navigation nodes found.")ifargs.parent_title:parent=next((nforninnavifn.title==args.parent_title),None)else:parent=nav[0]ifparentisNone:sys.exit(f"Parent node not found: {args.parent_title}")url=args.urlchild_info=NavigationNodeCreationInformation(Title=args.title,Url=url,AsLastNode=True)child=parent.children.add(child_info).execute_query()print(f"Child node added: {child.title} under {parent.title}")if__name__=="__main__":main()