This is a short document on getting up to speed with gmailr quickly.
In order to use gmailr you will need to create a google project for it. The easiest way to do this is via the Python Quickstart.
Enable the Gmail APIbutton.
DOWNLOAD CLIENT CONFIGURATIONon your computer.
gm_auth_configure(path = "path/to/downloaded/json")
GMAILR_APPenvironment variable to the location of the JSON file, it is convienent to do this in your
usethis::edit_r_environ(). Then calling
gm_auth_configure()with no arguments.
gm_auth()to start the OAuth flow to verify to google that you would like your gmailr project to have access to your email. You will get a scary warning about an untrusted application, this is because the application is the one you just created, click advanced and
Go to gmailrto proceed to do the oauth flow.
gm_auth(). You can see a full list of available scopes from
Only very heavy usage of the Gmail API requires payment, so use of the API for most people should be free.
If you use
usethis::edit_r_environ() to set both
GMAILR_APP, then once you have an oauth token you can simply run
gm_auth_configure() with no arguments at the top of the script to setup your application.
Create a new email with
gm_mime() and the helper functions. When testing it is recommended to use
gm_create_draft() to verify your email is formatted as you expect before automating it (if desired) with
<- test_email gm_mime() %>% gm_to("PUT_A_VALID_EMAIL_ADDRESS_THAT_YOU_CAN_CHECK_HERE") %>% gm_from("PUT_THE_GMAIL_ADDRESS_ASSOCIATED_WITH_YOUR_GOOGLE_ACCOUNT_HERE") %>% gm_subject("this is just a gmailr test") %>% gm_text_body("Can you hear me now?") # Verify it looks correct gm_create_draft(test_email) # If all is good with your draft, then you can send it gm_send_message(test_email)
You can add a file attachment to your message with
write.csv("mtcars.csv", mtcars) <- gm_attach_file("mtcars.csv") test_email # Verify it looks correct gm_create_draft(test_email) # If so, send it gm_send_message(test_email)
gmail shows you threads of messages in the web UI, you can retrieve all threads with
gm_threads(), and retrieve a specific thread with
# view the latest thread <- gm_threads(num_results = 10) my_threads # retrieve the latest thread by retrieving the first ID <- gm_thread(gm_id(my_threads)[]) latest_thread # The messages in the thread will now be in a list $messages latest_thread # Retrieve parts of a specific message with the accessors <- latest_thread$messages[] my_msg gm_to(my_msg) gm_from(my_msg) gm_date(my_msg) gm_subject(my_msg) gm_body(my_msg) # If a message has attachments, download them all locally with `gm_save_attachments()`. gm_save_attachments(my_msg)