- [HTTP request](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/append#body.HTTP_TEMPLATE)
- [Path parameters](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/append#body.PATH_PARAMETERS)
- [Query parameters](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/append#body.QUERY_PARAMETERS)
- [Request body](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/append#body.request_body)
- [Response body](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/append#body.response_body)
  - [JSON representation](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/append#body.AppendValuesResponse.SCHEMA_REPRESENTATION)
- [Authorization scopes](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/append#body.aspect)
- [InsertDataOption](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/append#InsertDataOption)
- [Try it!](https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/append#try-it)

Appends values to a spreadsheet. The input range is used to search for existing data and find a "table" within that range. Values will be appended to the next row of the table, starting with the first column of the table. See the [guide](https://developers.google.com/workspace/sheets/api/guides/values#appending_values) and [sample code](https://developers.google.com/workspace/sheets/api/samples/writing#append_values) for specific details of how tables are detected and data is appended.

The caller must specify the spreadsheet ID, range, and a `https://developers.google.com/workspace/sheets/api/reference/rest/v4/ValueInputOption`. The `valueInputOption` only controls how the input data will be added to the sheet (column-wise or row-wise), it does not influence what cell the data starts being written to.

### HTTP request

`POST https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range}:append`

The URL uses [gRPC Transcoding](https://google.aip.dev/127) syntax.

### Path parameters

| Parameters ||
|---|---|
| `spreadsheetId` | `string` The ID of the spreadsheet to update. |
| `range` | `string` The [A1 notation](https://developers.google.com/workspace/sheets/api/guides/concepts#cell) of a range to search for a logical table of data. Values are appended after the last row of the table. |

### Query parameters

| Parameters ||
|---|---|
| `valueInputOption` | ``enum (`https://developers.google.com/workspace/sheets/api/reference/rest/v4/ValueInputOption`)`` How the input data should be interpreted. |
| `insertDataOption` | ``enum (`https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/append#InsertDataOption`)`` How the input data should be inserted. |
| `includeValuesInResponse` | `boolean` Determines if the update response should include the values of the cells that were appended. By default, responses do not include the updated values. |
| `responseValueRenderOption` | ``enum (`https://developers.google.com/workspace/sheets/api/reference/rest/v4/ValueRenderOption`)`` Determines how values in the response should be rendered. The default render option is `https://developers.google.com/workspace/sheets/api/reference/rest/v4/ValueRenderOption`. |
| `responseDateTimeRenderOption` | ``enum (`https://developers.google.com/workspace/sheets/api/reference/rest/v4/DateTimeRenderOption`)`` Determines how dates, times, and durations in the response should be rendered. This is ignored if `https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values/append#body.QUERY_PARAMETERS.response_value_render_option` is `https://developers.google.com/workspace/sheets/api/reference/rest/v4/ValueRenderOption`. The default dateTime render option is `https://developers.google.com/workspace/sheets/api/reference/rest/v4/DateTimeRenderOption`. |

### Request body

The request body contains an instance of `https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets.values#ValueRange`.

### Response body

The response when updating a range of values in a spreadsheet.

If successful, the response body contains data with the following structure:

| JSON representation |
|---|
| ``` { "spreadsheetId": string, "tableRange": string, "updates": { object (`https://developers.google.com/workspace/sheets/api/reference/rest/v4/UpdateValuesResponse`) } } ``` |

| Fields ||
|---|---|
| `spreadsheetId` | `string` The spreadsheet the updates were applied to. |
| `tableRange` | `string` The range (in A1 notation) of the table that values are being appended to (before the values were appended). Empty if no table was found. |
| `updates` | ``object (`https://developers.google.com/workspace/sheets/api/reference/rest/v4/UpdateValuesResponse`)`` Information about the updates that were applied. |

### Authorization scopes

Requires one of the following OAuth scopes:

- `https://www.googleapis.com/auth/drive`
- `https://www.googleapis.com/auth/drive.file`
- `https://www.googleapis.com/auth/spreadsheets`

For more information, see the [Authorization guide](https://developers.google.com/workspace/guides/configure-oauth-consent).

## InsertDataOption

Determines how existing data is changed when new data is input.

| Enums ||
|---|---|
| `OVERWRITE` | The new data overwrites existing data in the areas it is written. (Note: adding data to the end of the sheet will still insert new rows or columns so the data can be written.) |
| `INSERT_ROWS` | Rows are inserted for the new data. |