Retrieve data from a sheet#
Deprecated
This endpoint is deprecated and may be removed in a future release.
This endpoint was deprecated on 2026-02-12.
It is scheduled for sunset on 2029-01-31.
Description#
Retrieve data from a range in a sheet. Includes the value & formatting of cells, visibility of columns and cells, merged ranges, etc.
Limit the results to particular fields by providing a comma-separated list of paths, rooted at the data object.
Example: $fields=cells.calculatedValue,cells.formats.valueFormat
Note: This endpoint is rate-limited. You may experience rates as low as 600 requests per minute. This rate is shared across your workspace. When you encounter a 429, examine the Retry-After header and retry after that many seconds.
GET /platform/v1/spreadsheets/{spreadsheetId}/sheets/{sheetId}/sheetdata
Required OAuth Scopes
file:read
Parameters#
Parameter |
In |
Type |
Required |
Description |
|---|---|---|---|---|
X-Version |
header |
string |
false |
Version of the API (2022-01-01) |
spreadsheetId |
path |
string |
true |
The unique identifier of the spreadsheet |
sheetId |
path |
string |
true |
The unique identifier of the sheet |
$cellrange |
query |
string |
false |
The range to query. If not provided, the entire sheet will be queried. |
$maxcellsperpage |
query |
integer |
false |
The maximum number of cells to retrieve. The default is 50000. The maximum allowed value is 50000. |
$next |
query |
string |
false |
Pagination cursor for next set of results. |
$fields |
query |
string |
false |
A restricted set of fields for a given resource. |
Detailed descriptions#
$cellrange: The range to query. If not provided, the entire sheet will be queried. A1 style representation of a cell or range. A range my be unbounded in any/all directions by leaving off the corresponding column or row.
Code Samples#
curl -X GET https://api.app.wdesk.com/platform/v1/spreadsheets/{spreadsheetId}/sheets/{sheetId}/sheetdata \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}' \
-H 'X-Version: 2022-01-01'
http GET https://api.app.wdesk.com/platform/v1/spreadsheets/{spreadsheetId}/sheets/{sheetId}/sheetdata \
X-Version:2022-01-01 \
Accept:application/json \
Authorization:"Bearer {access-token}"
wget --method=GET "https://api.app.wdesk.com/platform/v1/spreadsheets/{spreadsheetId}/sheets/{sheetId}/sheetdata" \
--output-document - \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}' \
--header 'X-Version: 2022-01-01'
import requests
headers = {
'X-Version': '2022-01-01',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api.app.wdesk.com/platform/v1/spreadsheets/{spreadsheetId}/sheets/{sheetId}/sheetdata', headers = headers)
print(r.json())
Returns#
200 - OK#
Returns a JSON object with data and @nextLink properties. data contains a SheetData object, and @nextLink provides the URL to the next set of results. If there are no additional results, @nextLink doesn’t appear.
400 - Bad Request#
Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.
403 - Forbidden#
Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.
404 - Not Found#
Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.
409 - Conflict#
Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.
429 - Too Many Requests#
Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.
500 - Internal Server Error#
Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.
Example Responses#
{
"@nextLink": "<opaque_url>",
"data": {
"cells": [
[
{
"calculatedValue": 2,
"effectiveFormats": {
"cellFormat": {
"backgroundColor": "#d0e8ff",
"borders": {
"bottom": {
"color": "#000",
"style": "SINGLE",
"weight": 1
},
"left": {
"color": "#000",
"style": "SINGLE",
"weight": 1
},
"right": null,
"top": {
"color": "#000",
"style": "SINGLE",
"weight": 1
}
},
"horizontalAlign": "RIGHT",
"indent": {
"unit": "INCHES",
"value": 0
},
"leaderDots": null,
"textRotation": null,
"verticalAlign": "BOTTOM"
},
"textFormat": {
"bold": true,
"fontColor": "#000000",
"fontFamily": "Arial",
"fontSize": 10,
"italic": false,
"strikethrough": false,
"underline": false
},
"valueFormat": {
"currencySymbol": {
"currency": {
"code": "EUR",
"display": "SYMBOL"
},
"generic": null
},
"dateAbbreviateMonth": null,
"dateFormatString": null,
"dateUppercaseAll": null,
"displayZeroAs": "ZERO",
"enteredIn": "ONES",
"numbersAsWordsOptions": {
"capitalizeFirstWord": false,
"displayZeroAs": null
},
"percentSymbol": null,
"periodFormat": null,
"precision": {
"auto": false,
"value": 2
},
"prefix": "",
"showCurrencySymbol": true,
"showLeadingZero": true,
"showNumbersAsWords": false,
"showPositiveSign": false,
"showSignRoundedZero": false,
"showThousandsSeparator": true,
"shownIn": "ONES",
"suffix": "",
"symbolAlign": "SYMBOL DEFAULT",
"useParensForNegatives": false,
"valueFormatType": "CURRENCY"
}
},
"formats": {
"cellFormat": {
"backgroundColor": "#d0e8ff",
"borders": {
"bottom": {
"color": "#000",
"style": "SINGLE",
"weight": 1
},
"left": {
"color": "#000",
"style": "SINGLE",
"weight": 1
},
"right": null,
"top": {
"color": "#000",
"style": "SINGLE",
"weight": 1
}
},
"horizontalAlign": null,
"indent": null,
"leaderDots": null,
"textRotation": null,
"verticalAlign": null
},
"textFormat": {
"bold": true,
"fontColor": null,
"fontFamily": null,
"fontSize": null,
"italic": null,
"strikethrough": null,
"underline": null
},
"valueFormat": {
"currencySymbol": {
"currency": {
"code": "EUR",
"display": "SYMBOL"
},
"generic": null
},
"dateAbbreviateMonth": null,
"dateFormatString": null,
"dateUppercaseAll": null,
"displayZeroAs": "ZERO",
"enteredIn": "ONES",
"numbersAsWordsOptions": {
"capitalizeFirstWord": false,
"displayZeroAs": null
},
"percentSymbol": null,
"periodFormat": null,
"precision": {
"auto": false,
"value": 2
},
"prefix": "",
"showCurrencySymbol": true,
"showLeadingZero": true,
"showNumbersAsWords": false,
"showPositiveSign": null,
"showSignRoundedZero": false,
"showThousandsSeparator": true,
"shownIn": "ONES",
"suffix": "",
"symbolAlign": null,
"useParensForNegatives": false,
"valueFormatType": "CURRENCY"
}
},
"value": "=1+1"
}
]
],
"columnMetadata": [
{
"hidden": false,
"size": 75
}
],
"merges": [
{
"startColumn": 0,
"startRow": 0,
"stopColumn": 1,
"stopRow": 0
}
],
"range": {
"startColumn": 0,
"startRow": 0,
"stopColumn": 0,
"stopRow": 0
},
"rowMetadata": [
{
"filtered": false,
"hidden": false,
"size": 16
}
]
}
}
{
"code": "400BadRequest",
"message": "The request was unacceptable, often due to a missing or invalid parameter"
}
{
"code": "401Unauthorized",
"message": "No valid API token provided"
}
{
"code": "403Forbidden",
"message": "The API token does not have permissions to perform the request"
}
{
"code": "404NotFound",
"message": "The requested resource could not be found"
}
{
"code": "409Conflict",
"message": "The request conflicts with another request"
}
{
"code": "429TooManyRequests",
"message": "Too many requests have been made against the API in too short a time"
}
{
"code": "500InternalServerError",
"message": "The server encountered an unexpected condition that prevented it from fulfilling the request"
}
{
"code": "503ServiceUnavailable",
"message": "The server cannot handle the request due to a temporary overload or scheduled maintenance"
}