Skip to content

Adds one or more (work)sheets to an existing (spread)Sheet. Note that sheet names must be unique.


sheet_add(ss, sheet = NULL, ..., .before = NULL, .after = NULL)



Something that identifies a Google Sheet:

  • its file id as a string or drive_id

  • a URL from which we can recover the id

  • a one-row dribble, which is how googledrive represents Drive files

  • an instance of googlesheets4_spreadsheet, which is what gs4_get() returns

Processed through as_sheets_id().


One or more new sheet names. If unspecified, one new sheet is added and Sheets autogenerates a name of the form "SheetN".


Optional parameters to specify additional properties, common to all of the new sheet(s). Not relevant to most users. Specify fields of the SheetProperties schema in name = value form.

.before, .after

Optional specification of where to put the new sheet(s). Specify, at most, one of .before and .after. Refer to an existing sheet by name (via a string) or by position (via a number). If unspecified, Sheets puts the new sheet(s) at the end.


The input ss, as an instance of sheets_id


if (gs4_has_token()) {
  ss <- gs4_create("add-sheets-to-me")

  # the only required argument is the target spreadsheet
  ss %>% sheet_add()

  # but you CAN specify sheet name and/or position
  ss %>% sheet_add("apple", .after = 1)
  ss %>% sheet_add("banana", .after = "apple")

  # add multiple sheets at once
  ss %>% sheet_add(c("coconut", "dragonfruit"))

  # keeners can even specify additional sheet properties
  ss %>%
      sheet = "eggplant",
      .before = 1,
      gridProperties = list(
        rowCount = 3, columnCount = 6, frozenRowCount = 1

  # get an overview of the sheets

  # clean up
  gs4_find("add-sheets-to-me") %>%
#>  Creating new Sheet: add-sheets-to-me.
#>  Adding 1 sheet to add-sheets-to-me:
#>  Sheet2
#>  Adding 1 sheet to add-sheets-to-me:
#>  apple
#>  Adding 1 sheet to add-sheets-to-me:
#>  banana
#>  Adding 2 sheets to add-sheets-to-me:
#>  coconut
#>  dragonfruit
#>  Adding 1 sheet to add-sheets-to-me:
#>  eggplant
#> File trashed:
#>  add-sheets-to-me <id: 1_bu1QCeH_IG6UON6-EdNBoFnv_v_PDduqSO3y_whSXc>