Skip to content

Generate a request, using knowledge of the Sheets API from its Discovery Document ( Use request_make() to execute the request. Most users should, instead, use higher-level wrappers that facilitate common tasks, such as reading or writing worksheets or cell ranges. The functions here are intended for internal use and for programming around the Sheets API.

request_generate() lets you provide the bare minimum of input. It takes a nickname for an endpoint and:

  • Uses the API spec to look up the method, path, and base_url.

  • Checks params for validity and completeness with respect to the endpoint. Uses params for URL endpoint substitution and separates remaining parameters into those destined for the body versus the query.

  • Adds an API key to the query if and only if token = NULL.


  endpoint = character(),
  params = list(),
  key = NULL,
  token = gs4_token()



Character. Nickname for one of the selected Sheets API v4 endpoints built into googlesheets4. Learn more in gs4_endpoints().


Named list. Parameters destined for endpoint URL substitution, the query, or the body.


API key. Needed for requests that don't contain a token. The need for an API key in the absence of a token is explained in Google's document "Credentials, access, security, and identity" ( In order of precedence, these sources are consulted: the formal key argument, a key parameter in params, a user-configured API key set up with gs4_auth_configure() and retrieved with gs4_api_key().


Set this to NULL to suppress the inclusion of a token. Note that, if auth has been de-activated via gs4_deauth(), gs4_token() will actually return NULL.


Components are method, url, body, and token, suitable as input for request_make().


req <- request_generate(
  list(spreadsheetId = gs4_example("deaths")),
  token = NULL
#> $method
#> [1] "GET"
#> $url
#> [1] ""
#> $body
#> named list()
#> $token