Some googledrive functions are built to naturally handle multiple files, while others operate on a single file.

Functions that expect a single file:

Functions that allow multiple files:

In general, the principle is: if there are multiple parameters that are likely to vary across multiple files, the function is designed to take a single input. In order to use these function with multiple inputs, use them together with your favorite approach for iteration in R. Below is a worked example, focusing on tools in the tidyverse, namely the map() functions in purrr.

Upload multiple files, then rename them

Scenario: we have multiple local files we want to upload into a folder on Drive. Then we regret their original names and want to rename them.

Load packages.

Upload

Use the example files that ship with googledrive. This looks a bit odd, but the first call returns their names and the second returns full paths on the local system.

Create a folder on your Drive and upload all files into this folder by iterating over the local_files using purrr::map().

files is now a list of dribbles, one per uploaded file. Let’s confirm that we uploaded the file into the new folder.

Rename

Imagine that we now wish these file names had a date prefix. First, form the new names. We use glue::glue() for string interpolation but you could also use paste(). Second, we map over two inputs: the list of dribbles from above and the vector of new names.

We use purrr::map2_df() to work through the list of dribbles (= Drive files) and the vector of new names and row bind the returned dribbles into a single dribble holding all files. In commented out code, we show an alternative using purrr::map2() that would return another list of dribbles. This would set you up better for downstream operations that required more map()ing.

Let’s check on the contents of this folder again:

Note that you can always row bind individual dribbles into one big dribble yourself. We demo that with dplyr::bind_rows():

Clean up

Our trashing function, drive_trash() is vectorized and can therefore operate on a multi-file dribble. We could trash these files like so:

drive_trash(files_dribble)

If you’re absolutely sure of yourself and happy to do something irreversible, you could truly delete these files with drive_rm(), which is also vectorized:

drive_rm(files_dribble)

Finally – and this is the code we will actually execute – the easiest way to delete these files is to delete their enclosing folder.