Adds one or more new rows after the last row with data in a (work)sheet, increasing the row dimension of the sheet if necessary.

sheet_append(ss, data, sheet = 1)



Something that identifies a Google Sheet: its file ID, a URL from which we can recover the ID, an instance of googlesheets4_spreadsheet (returned by gs4_get()), or a dribble, which is how googledrive represents Drive files. Processed through as_sheets_id().


A data frame.


Sheet to append to, in the sense of "worksheet" or "tab". You can identify a sheet by name, with a string, or by position, with a number.


The input ss, as an instance of sheets_id

See also


if (gs4_has_token()) { # we will recreate the table of "other" deaths from this example Sheet (deaths <- gs4_example("deaths") %>% range_read(range = "other_data", col_types = "????DD")) # split the data into 3 pieces, which we will send separately deaths_one <- deaths[ 1:5, ] deaths_two <- deaths[ 6, ] deaths_three <- deaths[7:10, ] # create a Sheet and send the first chunk of data ss <- gs4_create("sheet-append-demo", sheets = list(deaths = deaths_one)) # append a single row ss %>% sheet_append(deaths_two) # append remaining rows ss %>% sheet_append(deaths_three) # read and check against the original deaths_replica <- range_read(ss, col_types = "????DD") identical(deaths, deaths_replica) # clean up gs4_find("sheet-append-demo") %>% googledrive::drive_trash() }
#> Reading from "deaths"
#> Range "other_data"
#> Creating new Sheet: "sheet-append-demo"
#> Writing to "sheet-append-demo"
#> Appending 1 row(s) to "deaths"
#> Writing to "sheet-append-demo"
#> Appending 4 row(s) to "deaths"
#> Reading from "sheet-append-demo"
#> Range "deaths"
#> Files trashed: #> * sheet-append-demo: 1tPtHhc7DOw7g3tztUucJi8C1SU7wMc-rFnjAk_EmzfI