Skip to main content
add_row Insert ONE new row (record) into a table and fill its cells — use this to write data into a table. For 2+ rows use add_row_batch; to change an existing row use update_cells. cellValues maps column names (as get_table_schema lists them) to values. Values by column type: text/email/url/phone a plain string (no markdown: a cell shows as typed, in documents too); number a number; money with its currency, {“value”: 1200, “code”: “GBP”} or “£1,200” (codes USD, EUR, GBP, JPY, no other; a bare number is stored as USD); date an ISO date “2026-09-28”; time “14:30”; checkbox true/false; select an option label; multiSelect an array of labels (new labels become options); progress a number, “42%” or {“current”: 3, “total”: 10}; location {“mainText”, “secondaryText”, “type”, “lat”, “lng”} with lat and lng filled (an address alone has no coordinates, so it never shows on a map); relation (oneMany) an array of row ids from the linked table; reference a documentId or {“documentId”, “blockId”}. person the email or full name of someone in the project or workspace (anyone else is refused, with who is listed). Pass null or "" to clear a cell. Formula, timer and approval columns cannot be written. To make the row’s name a link to a row of another table, pass {“linkedTableId”: “<sourceTableId>”, “linkedRowId”: “<sourceRowId>”} for the identifier column (find ids with lookup_table_cells). Returns the new rowId, plus rejectedValues for any value that could not be written.

Parameters

string
required
object
Column name → value. Include the identifier (row name) column. E.g. {“Employee Name”: “John”, “Email”: “john@example.com”, “Salary”: 50000, “Status”: “Active”}.