You can read Sheets rows now. What structured text lives in Google Docs that you still open manually?
After search_sheets I have the Sheets workflow. But my pitch deck notes, board meeting prep, and investor one-pagers all live in Google Docs. I open them manually every time I need to reference them.
GOOGLEDOCS_GET_DOCUMENT_BY_ID reads the full document — title and body content as a structured dict. Same search-then-read pattern you already know from Sheets:
result = toolset.execute_action(
Action.GOOGLEDOCS_GET_DOCUMENT_BY_ID,
{"document_id": doc_id}
)
title = result.get("title", "untitled")
body = result.get("body", {})
print(f"Doc: {title}")The body comes back as a dict, not a string? How do I get the actual text?
Google Docs returns a structured content tree — paragraphs, tables, lists as nested objects. For most purposes, result.get('body', {}).get('content', []) gives you a list of content elements. Extracting plain text requires iterating the structure. Here's the full function:
def read_doc(doc_id: str) -> dict:
result = toolset.execute_action(
Action.GOOGLEDOCS_GET_DOCUMENT_BY_ID,
{"document_id": doc_id}
)
print(f"Doc: {result.get('title', 'untitled')}")
return resultSo I read the board meeting prep doc, extract the key points, and pass them into draft_email — a pre-filled investor email based on my own notes. That's powerful.
Your board meeting prep doc now feeds your investor email automatically. The whole founder ops stack is connecting.
Four apps — Gmail, Calendar, Sheets, Docs. All following the same pattern. One action, one dict, safe parse. The template works everywhere.
Google Docs document IDs are in the URL: docs.google.com/document/d/{ID}/edit. The ID is the long alphanumeric string between /d/ and /edit. Use that as your doc_id argument.
GOOGLEDOCS_GET_DOCUMENT_BY_ID returns the full document structure. Reading your pitch notes and board prep docs into Python lets you chain them directly with Gmail — automatically extracting key points and piping them directly into investor email drafts without any manual copy-pasting or tab switching.
toolset.execute_action(
Action.GOOGLEDOCS_GET_DOCUMENT_BY_ID,
{"document_id": "1abc..."}
){"title": "Board Prep Q2", "body": {"content": [{"paragraph": {...}}, ...]}, "documentId": "1abc..."}From the URL: docs.google.com/document/d/**{ID}**/edit
You can read Sheets rows now. What structured text lives in Google Docs that you still open manually?
After search_sheets I have the Sheets workflow. But my pitch deck notes, board meeting prep, and investor one-pagers all live in Google Docs. I open them manually every time I need to reference them.
GOOGLEDOCS_GET_DOCUMENT_BY_ID reads the full document — title and body content as a structured dict. Same search-then-read pattern you already know from Sheets:
result = toolset.execute_action(
Action.GOOGLEDOCS_GET_DOCUMENT_BY_ID,
{"document_id": doc_id}
)
title = result.get("title", "untitled")
body = result.get("body", {})
print(f"Doc: {title}")The body comes back as a dict, not a string? How do I get the actual text?
Google Docs returns a structured content tree — paragraphs, tables, lists as nested objects. For most purposes, result.get('body', {}).get('content', []) gives you a list of content elements. Extracting plain text requires iterating the structure. Here's the full function:
def read_doc(doc_id: str) -> dict:
result = toolset.execute_action(
Action.GOOGLEDOCS_GET_DOCUMENT_BY_ID,
{"document_id": doc_id}
)
print(f"Doc: {result.get('title', 'untitled')}")
return resultSo I read the board meeting prep doc, extract the key points, and pass them into draft_email — a pre-filled investor email based on my own notes. That's powerful.
Your board meeting prep doc now feeds your investor email automatically. The whole founder ops stack is connecting.
Four apps — Gmail, Calendar, Sheets, Docs. All following the same pattern. One action, one dict, safe parse. The template works everywhere.
Google Docs document IDs are in the URL: docs.google.com/document/d/{ID}/edit. The ID is the long alphanumeric string between /d/ and /edit. Use that as your doc_id argument.
GOOGLEDOCS_GET_DOCUMENT_BY_ID returns the full document structure. Reading your pitch notes and board prep docs into Python lets you chain them directly with Gmail — automatically extracting key points and piping them directly into investor email drafts without any manual copy-pasting or tab switching.
toolset.execute_action(
Action.GOOGLEDOCS_GET_DOCUMENT_BY_ID,
{"document_id": "1abc..."}
){"title": "Board Prep Q2", "body": {"content": [{"paragraph": {...}}, ...]}, "documentId": "1abc..."}From the URL: docs.google.com/document/d/**{ID}**/edit
Create a free account to get started. Paid plans unlock all tracks.