read_google_sheets_range
Read Google Sheet cells positionally without interpreting headers.
read_google_sheets_range(sheet_id: str, range: str, sheet_name: str = None) -> dictReturns sheetId, sheetName, range, one-based startRow and startColumn, rectangular rows of cell objects, and intersecting merges. Cells have displayText, hyperlinks, and optional formula/note. Blank positions are preserved. Merges use zero-based, end-exclusive indices; their values are not expanded. Requires Viewer access. Supply a bounded tab-local A1 range of at most 10,000 cells within the current grid.
Example
page = read_google_sheets_range("SHEET_ID", "B2:D100", sheet_name="October")
for row in page["rows"]:
print(row[0]["displayText"], row[1]["hyperlinks"])See Google Sheets: tables, ranges and reliability for access, limits, merged cells, cache freshness and safe recovery after failures.