import os import json from google.oauth2.credentials import Credentials from googleapiclient.discovery import build token_path = os.path.expanduser("~/.hermes/profiles/reviewer/google_token.json") with open(token_path, "r") as f: creds_data = json.load(f) creds = Credentials.from_authorized_user_info(creds_data) docs_service = build("docs", "v1", credentials=creds) drive_service = build("drive", "v3", credentials=creds) doc_id = "1sjTe7Im51CY2Tl0SNQrm8xmO7bYweMkq44E0WXaxs1I" doc = docs_service.documents().get(documentId=doc_id).execute() print(f"Title: {doc.get('title')}") positioned_objects = doc.get("positionedObjects", {}) inline_objects = doc.get("inlineObjects", {}) print(f"Positioned objects count: {len(positioned_objects)}") print(f"Inline objects count: {len(inline_objects)}") if positioned_objects: print("Positioned objects detail:") for k, v in positioned_objects.items(): print(k, json.dumps(v, indent=2)) body = doc.get("body", {}) content = body.get("content", []) print(f"Total elements in body: {len(content)}") for i, element in enumerate(content): keys = list(element.keys()) if "paragraph" in element: p = element["paragraph"] p_text = "".join([el.get("textRun", {}).get("content", "") for el in p.get("elements", []) if "textRun" in el]) pos_ids = [el.get("positionedObjectIds", []) for el in p.get("elements", [])] inline_ids = [el.get("inlineObjectElement", {}).get("inlineObjectId") for el in p.get("elements", []) if "inlineObjectElement" in el] print(f"[{i}] Paragraph: '{p_text.strip()[:60]}' | inline: {inline_ids} | pos: {pos_ids}") elif "table" in element: tbl = element["table"] rows = len(tbl.get("tableRows", [])) cols = len(tbl.get("tableRows", [{}])[0].get("tableCells", [])) if rows > 0 else 0 print(f"[{i}] Table: {rows}x{cols}") elif "sectionBreak" in element: print(f"[{i}] SectionBreak") else: print(f"[{i}] Other: {keys}")