(Over)write new data into a SheetSource:
This is one of the main ways to write data with googlesheets4. This function writes a data frame into a (work)sheet inside a (spread)Sheet. The target sheet is styled as a table:
Special formatting is applied to the header row, which holds column names.
The first row (header row) is frozen.
The sheet's dimensions are set to "shrink wrap" the
If no existing Sheet is specified via
ss, this function delegates to
gs4_create() and the new Sheet's name is randomly generated. If that's
gs4_create() directly to get more control.
sheet is specified or if
sheet doesn't identify an existing sheet,
a new sheet is added to receive the
sheet specifies an existing
sheet, it is effectively overwritten! All pre-existing values, formats, and
dimensions are cleared and the targeted sheet gets new values and dimensions
This function goes by two names, because we want it to make sense in two contexts:
write_sheet()evokes other table-writing functions, like
sheethere technically refers to an individual (work)sheet (but also sort of refers to the associated Google (spread)Sheet).
sheet_write()is the right name according to the naming convention used throughout the googlesheets4 package.
sheet_write() are equivalent and you can use either one.
A data frame. If it has zero rows, we send one empty pseudo-row of data, so that we can apply the usual table styling. This empty row goes away (gets filled, actually) the first time you send more data with
Something that identifies a Google Sheet:
its file id as a string or
a URL from which we can recover the id
dribble, which is how googledrive represents Drive files
an instance of
googlesheets4_spreadsheet, which is what
Sheet to write into, in the sense of "worksheet" or "tab". You can identify a sheet by name, with a string, or by position, with a number.
ss, as an instance of
df <- data.frame( x = 1:3, y = letters[1:3] ) # specify only a data frame, get a new Sheet, with a random name ss <- write_sheet(df) #> ✔ Creating new Sheet: ducal-degus. read_sheet(ss) #> ✔ Reading from ducal-degus. #> ✔ Range df. #> # A tibble: 3 × 2 #> x y #> <dbl> <chr> #> 1 1 a #> 2 2 b #> 3 3 c # clean up googledrive::drive_trash(ss) #> File trashed: #> • ducal-degus <id: 1dNIV85RtygtMp5hbENdgrIlJKFJRHZvjkQgbXZx6FgM> # create a Sheet with some initial, placeholder data ss <- gs4_create( "sheet-write-demo", sheets = list(alpha = data.frame(x = 1), omega = data.frame(x = 1)) ) #> ✔ Creating new Sheet: sheet-write-demo. # write df into its own, new sheet sheet_write(df, ss = ss) #> ✔ Writing to sheet-write-demo. #> ✔ Writing to sheet df. # write mtcars into the sheet named "omega" sheet_write(mtcars, ss = ss, sheet = "omega") #> ✔ Writing to sheet-write-demo. #> ✔ Writing to sheet omega. # get an overview of the sheets sheet_properties(ss) #> # A tibble: 3 × 8 #> name index id type visible grid_rows grid_columns data #> <chr> <int> <int> <chr> <lgl> <int> <int> <list> #> 1 alpha 0 103097357 GRID TRUE 2 1 <NULL> #> 2 omega 1 1152943737 GRID TRUE 33 11 <NULL> #> 3 df 2 304579001 GRID TRUE 4 2 <NULL> # view your magnificent creation in the browser gs4_browse(ss) # clean up gs4_find("sheet-write-demo") %>% googledrive::drive_trash() #> File trashed: #> • sheet-write-demo <id: 17WTj38z796efTPloNjP92SB2-_YX9mRCttPi6QasV28>