Update sheet content#

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 2027-01-31.

Description#

Asynchronously submits a SheetUpdate to a sheet. Each SheetUpdate can have only one update field set per request.

Note: This endpoint is rate-limited. You may experience rates as low as 60 reqeusts 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.

POST /prototype/platform/spreadsheets/{spreadsheetId}/sheets/{sheetId}/update

Required OAuth Scopes

file:write

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

body

body

PrototypeSheetUpdate

true

A SheetUpdate

Body parameter example#

{
  "applyBorders": {
    "borders": [
      {
        "bottom": {
          "color": "#000000",
          "style": "SINGLE",
          "weight": 2
        },
        "innerHorizontal": {
          "color": "#808080",
          "style": "DASHED1",
          "weight": 1
        },
        "innerVertical": {
          "color": "#808080",
          "style": "DASHED1",
          "weight": 1
        },
        "left": {
          "color": "#000000",
          "style": "SINGLE",
          "weight": 2
        },
        "ranges": [
          {
            "startColumn": 0,
            "startRow": 0,
            "stopColumn": 3,
            "stopRow": 3
          }
        ],
        "right": {
          "color": "#000000",
          "style": "SINGLE",
          "weight": 2
        },
        "top": {
          "color": "#000000",
          "style": "SINGLE",
          "weight": 2
        }
      }
    ]
  },
  "applyFormats": {
    "formats": [
      {
        "cellFormat": {
          "backgroundColor": "#d0e0f0"
        },
        "ranges": [
          {
            "startColumn": 0,
            "startRow": 0,
            "stopColumn": null,
            "stopRow": 0
          }
        ],
        "textFormat": {
          "bold": true
        },
        "valueFormat": {
          "valueFormatType": "TEXT"
        }
      }
    ]
  },
  "clearBorders": {
    "ranges": [
      {
        "startColumn": 0,
        "startRow": 0,
        "stopColumn": 3,
        "stopRow": 3
      }
    ]
  },
  "clearFormats": {
    "cellFormatFields": [
      "*"
    ],
    "ranges": [
      {
        "startColumn": 0,
        "startRow": 0,
        "stopColumn": null,
        "stopRow": 0
      }
    ],
    "textFormatFields": [
      "*"
    ],
    "valueFormatFields": [
      "*"
    ]
  },
  "deleteColumns": {
    "force": true,
    "intervals": [
      {
        "end": 3,
        "start": 2
      }
    ]
  },
  "deleteRows": {
    "force": true,
    "intervals": [
      {
        "end": 7,
        "start": 5
      }
    ]
  },
  "editCells": {
    "cells": [
      {
        "column": 0,
        "row": 0,
        "value": "Alpha One"
      },
      {
        "column": 1,
        "row": 0,
        "value": "Bravo One"
      },
      {
        "column": 0,
        "row": 1,
        "value": "Alpha Two"
      },
      {
        "column": 1,
        "row": 1,
        "value": "Bravo Two"
      }
    ]
  },
  "editRange": {
    "range": {
      "startColumn": 0,
      "startRow": 0,
      "stopColumn": 1,
      "stopRow": 1
    },
    "values": [
      [
        "Alpha One",
        "Bravo One"
      ],
      [
        "Alpha Two",
        "Bravo Two"
      ]
    ]
  },
  "hideColumns": {
    "force": true,
    "intervals": [
      {
        "end": 5,
        "start": 4
      }
    ]
  },
  "hideRows": {
    "force": true,
    "intervals": [
      {
        "end": 9,
        "start": 7
      }
    ]
  },
  "insertColumns": {
    "inheritFrom": "BEFORE",
    "insertions": [
      {
        "count": 1,
        "index": 3
      }
    ]
  },
  "insertRows": {
    "inheritFrom": "BEFORE",
    "insertions": [
      {
        "count": 2,
        "index": 6
      }
    ]
  },
  "mergeRanges": {
    "force": true,
    "mergeType": "HORIZONTAL",
    "ranges": [
      {
        "startColumn": 0,
        "startRow": 4,
        "stopColumn": 1,
        "stopRow": 7
      }
    ]
  },
  "resizeColumns": {
    "resizeIntervals": [
      {
        "intervals": [
          {
            "end": 3,
            "start": 0
          }
        ],
        "size": 96
      }
    ]
  },
  "resizeColumnsToFit": {
    "intervals": [
      {
        "end": 3,
        "start": 0
      }
    ]
  },
  "resizeRows": {
    "resizeIntervals": [
      {
        "intervals": [
          {
            "end": 3,
            "start": 0
          }
        ],
        "size": 24
      }
    ]
  },
  "resizeRowsToFit": {
    "intervals": [
      {
        "end": 3,
        "start": 0
      }
    ]
  },
  "unhideColumns": {
    "intervals": [
      {
        "end": 5,
        "start": 4
      }
    ]
  },
  "unhideRows": {
    "intervals": [
      {
        "end": 9,
        "start": 7
      }
    ]
  },
  "unmergeRanges": {
    "ranges": [
      {
        "startColumn": 0,
        "startRow": 4,
        "stopColumn": 1,
        "stopRow": 7
      }
    ]
  }
}

Code Samples#

curl -X POST https://api.app.wdesk.com/prototype/platform/spreadsheets/{spreadsheetId}/sheets/{sheetId}/update \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer {access-token}' \
    -H 'X-Version: 2022-01-01'
http POST https://api.app.wdesk.com/prototype/platform/spreadsheets/{spreadsheetId}/sheets/{sheetId}/update \
    X-Version:2022-01-01 \
    Content-Type:application/json \
    Accept:application/json \
    Authorization:"Bearer {access-token}"
wget --method=POST "https://api.app.wdesk.com/prototype/platform/spreadsheets/{spreadsheetId}/sheets/{sheetId}/update" \
    --output-document -  \ 
    --header 'Content-Type: application/json' \ 
    --header 'Accept: application/json' \ 
    --header 'Authorization: Bearer {access-token}' \
    --header 'X-Version: 2022-01-01'
import requests

headers = {
  'X-Version': '2022-01-01',
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://api.app.wdesk.com/prototype/platform/spreadsheets/{spreadsheetId}/sheets/{sheetId}/update', headers = headers)

print(r.headers['Location'])

Returns#

202 - Accepted#

Header

Description

Location

The location to poll for the operation result.

Retry-After

The number of seconds to wait before polling for a result and between polling attempts.

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.

401 - Unauthorized#

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.

503 - Service Unavailable#

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#

{
  "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"
}