Overview

googledrive allows you to interact with files on Google Drive from R.

Installation

Install from CRAN:

install.packages("googledrive")

Usage

Load googledrive

library("googledrive")

Package conventions

  • Most functions begin with the prefix drive_. Auto-completion is your friend.
  • Goal is to allow Drive access that feels similar to Unix file system utilities, e.g., find, ls, mv, cp, mkdir, and rm.
  • The metadata for one or more Drive files is held in a dribble, a “Drive tibble”. This is a data frame with one row per file. A dribble is returned (and accepted) by almost every function in googledrive. Design goals:
    • Give humans what they want: the file name
    • Track what the API wants: the fild ID
    • Hold on to all the other metadata sent back by the API
  • googledrive is “pipe-friendly” and, in fact, re-exports %>%, but does not require its use.

Quick demo

Here’s how to list up to n_max of the files you see in My Drive. You can expect to be sent to your browser here, to authenticate yourself and authorize the googledrive package to deal on your behalf with Google Drive.

You can narrow the query by specifying a pattern you’d like to match names against. Or by specifying a file type: the type argument understands MIME types, file extensions, and a few human-friendly keywords.

drive_find(pattern = "chicken")
drive_find(type = "spreadsheet")     ## Google Sheets!
drive_find(type = "csv")             ## MIME type = "text/csv"
drive_find(type = "application/pdf") ## MIME type = "application/pdf"

Alternatively, you can refine the search using the q query parameter. Accepted search clauses can be found in the Google Drive API documentation. For example, to see all files that you’ve starred and that are readable by “anyone with a link”, do this:

You generally want to store the result of a googledrive call, as we do with files above. files is a dribble with info on several files and can be used as the input for downstream calls. It can also be manipulated as a regular data frame at any point.

Identify files

drive_find() searches by file properties, but you can also identify files by name (path, really) or by Drive file id using drive_get().

as_id() can be used to coerce various inputs into a marked vector of file ids. It works on file ids (for obvious reasons!), various forms of Drive URLs, and dribbles.

In general, googledrive functions that operate on files allow you to specify the file(s) by name/path, file id, or in a dribble. If it’s ambiguous, use as_id() to mark a character vector as holding Drive file ids as opposed to file paths. This function can also extract file ids from various URLs.

Download files

Google files

We can download files from Google Drive. Native Google file types (such as Google Documents, Google Sheets, Google Slides, etc.) need to be exported to some conventional file type. There are reasonable defaults or you can specify this explicitly via type or implicitly via the file extension in path. For example, if I would like to download the “chicken_sheet” Google Sheet as a .csv I could run the following.

Alternatively, I could specify type via the path parameter.

Notice in the example above, I specified overwrite = TRUE, in order to overwrite the local csv file previously saved.

Finally, you could just allow export to the default type. In the case of Google Sheets, this is an Excel workbook:

Privacy

Privacy policy