Skip to content

append_google_sheet_rows

Append explicit rows to one Google Sheet tab, or insert empty rows at a position when start_row is set.

NameTypeRequiredDefaultDescription
model_nameAnnotated[str, Field(description='Name of the Bridge Town model.')]Yes
values`Annotated[list[Annotated[list[Any], Field(min_length=1, max_length=1000)]]None, Field(min_length=1, max_length=10000, description=‘Bounded rows and cell values to append. Omit for a structural insert of empty rows (requires sheet_id, start_row, and num_rows).’)]`NoNone
sheet_nameAnnotated[str, Field(min_length=1, max_length=100, description='Explicit destination tab name.')]No'Sheet1'
sheet_id`Annotated[intNone, Field(ge=0, description=‘Numeric tab ID from metadata. Required with start_row to insert.’)]`NoNone
start_row`Annotated[intNone, Field(ge=0, description=‘Zero-based row index to insert before. Provide to insert empty rows at a position instead of appending values at the end.’)]`NoNone
num_rows`Annotated[intNone, Field(ge=1, le=10000, description=‘Number of empty rows to insert. Required with start_row.’)]`NoNone
spreadsheet_id`Annotated[strNone, Field(description=‘Google Spreadsheet ID; provide this or source_name.’)]`NoNone
source_name`Annotated[strNone, Field(description=‘Connected Sheet data-source name; provide this or spreadsheet_id.’)]`NoNone
workspace_id`Annotated[strNone, Field(description=WORKSPACE_ID_FIELD_DESCRIPTION)]`NoNone

Returns a structured object. Top-level fields:

  • spreadsheet_id (string)
  • ranges_written (integer)
  • total_rows (integer)

See the response example below for the full payload shape.

{
"name": "append_google_sheet_rows",
"arguments": {
"model_name": "forecasts",
"sheet_name": "Forecast",
"values": [
[
"2026-03",
120
]
],
"spreadsheet_id": "1aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789ABCDEFG"
}
}
{
"spreadsheet_id": "1aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789ABCDEFG",
"ranges_written": 1,
"total_rows": 1
}
  • Module: Google Sheets
  • Requires an authenticated Bridge Town session (OAuth) or an API token.