create_event from yesterday adds deadlines to Calendar. Google Tasks is the companion — daily to-dos, research action items, things you track alongside your calendar. How do you read your Tasks programmatically?
Two steps — first get the task list IDs, then get the tasks inside a specific list. Same pattern as list_calendars → find_events.
Exactly right. GOOGLETASKS_LIST_TASK_LISTS returns your task lists. GOOGLETASKS_LIST_TASKS takes a tasklist ID and returns the tasks inside it. Two calls — the same two-step lookup pattern you used for Calendar:
lists_result = toolset.execute_action(Action.GOOGLETASKS_LIST_TASK_LISTS, {})
task_lists = lists_result.get("items", [])
for tl in task_lists:
print(f"{tl.get('title')}: {tl.get('id')}")items — not task_lists or lists? The key name is different from Calendar's calendars?
Each app uses its own key names in the response. Google Tasks uses items; Google Calendar uses calendars or events. Always check with .get() and a safe default — but also print the raw result once to confirm the shape:
def list_tasks(list_id: str) -> list:
lists_result = toolset.execute_action(Action.GOOGLETASKS_LIST_TASK_LISTS, {})
task_lists = lists_result.get("items", [])
print(f"Found {len(task_lists)} task lists")
tasks_result = toolset.execute_action(Action.GOOGLETASKS_LIST_TASKS, {"tasklist": list_id})
tasks = tasks_result.get("items", [])
print(f"Found {len(tasks)} tasks in list {list_id}")
return tasksMy research to-do list shows up — all the items I added in Tasks on my phone this morning. That's cross-device data I'm now reading in Python.
Your research to-dos are just a list of dicts now. Filter, sort, summarise — same patterns as your thesis survey data.
GOOGLETASKS_LIST_TASK_LISTS → GOOGLETASKS_LIST_TASKS — same two-step pattern I learned with Calendar. New app, familiar structure.
The Tasks @default tasklist ID is a special string that always refers to your primary list. It's useful for testing but fragile for automation — always look up the actual list ID with LIST_TASK_LISTS first if you're creating tasks in a specific list.
GOOGLETASKS_LIST_TASK_LISTS → list of task lists with id and titleGOOGLETASKS_LIST_TASKS with tasklist ID → list of tasksGoogle Tasks uses items as the response key — not tasks, not lists. .get('items', []) is the safe accessor.
@default shortcuttasklist: '@default' refers to your primary task list — useful for quick tests, but use a real ID for production workflows.
Each task dict includes id, title, status ("needsAction" or "completed"), and due (ISO date). Filter by status == "needsAction" to get only incomplete tasks.
create_event from yesterday adds deadlines to Calendar. Google Tasks is the companion — daily to-dos, research action items, things you track alongside your calendar. How do you read your Tasks programmatically?
Two steps — first get the task list IDs, then get the tasks inside a specific list. Same pattern as list_calendars → find_events.
Exactly right. GOOGLETASKS_LIST_TASK_LISTS returns your task lists. GOOGLETASKS_LIST_TASKS takes a tasklist ID and returns the tasks inside it. Two calls — the same two-step lookup pattern you used for Calendar:
lists_result = toolset.execute_action(Action.GOOGLETASKS_LIST_TASK_LISTS, {})
task_lists = lists_result.get("items", [])
for tl in task_lists:
print(f"{tl.get('title')}: {tl.get('id')}")items — not task_lists or lists? The key name is different from Calendar's calendars?
Each app uses its own key names in the response. Google Tasks uses items; Google Calendar uses calendars or events. Always check with .get() and a safe default — but also print the raw result once to confirm the shape:
def list_tasks(list_id: str) -> list:
lists_result = toolset.execute_action(Action.GOOGLETASKS_LIST_TASK_LISTS, {})
task_lists = lists_result.get("items", [])
print(f"Found {len(task_lists)} task lists")
tasks_result = toolset.execute_action(Action.GOOGLETASKS_LIST_TASKS, {"tasklist": list_id})
tasks = tasks_result.get("items", [])
print(f"Found {len(tasks)} tasks in list {list_id}")
return tasksMy research to-do list shows up — all the items I added in Tasks on my phone this morning. That's cross-device data I'm now reading in Python.
Your research to-dos are just a list of dicts now. Filter, sort, summarise — same patterns as your thesis survey data.
GOOGLETASKS_LIST_TASK_LISTS → GOOGLETASKS_LIST_TASKS — same two-step pattern I learned with Calendar. New app, familiar structure.
The Tasks @default tasklist ID is a special string that always refers to your primary list. It's useful for testing but fragile for automation — always look up the actual list ID with LIST_TASK_LISTS first if you're creating tasks in a specific list.
GOOGLETASKS_LIST_TASK_LISTS → list of task lists with id and titleGOOGLETASKS_LIST_TASKS with tasklist ID → list of tasksGoogle Tasks uses items as the response key — not tasks, not lists. .get('items', []) is the safe accessor.
@default shortcuttasklist: '@default' refers to your primary task list — useful for quick tests, but use a real ID for production workflows.
Each task dict includes id, title, status ("needsAction" or "completed"), and due (ISO date). Filter by status == "needsAction" to get only incomplete tasks.
Create a free account to get started. Paid plans unlock all tracks.