Ohjelmointi

Kuinka lähettää sähköpostia R: stä ja Gmailista

Jossain vaiheessa R-elämääsi haluat todennäköisesti jakaa analyysisi tulokset muiden kuin R-ryhmää käyttävien kollegoiden kanssa. Voit tehdä tämän monilla tavoilla. Yksi helpoimmista (ja halvimmista) on lähettää tulokset sähköpostitse.

Mutta on melko surullista automatisoida koko analyysityönkulku, vain käsitellä ja lähettää sähköpostin lopussa. Onneksi sinun ei tarvitse. On olemassa useita R-paketteja, joiden avulla voit lähettää sähköpostia suoraan R-komentosarjalta. Tässä artikkelissa esittelen yhden heistä: gmailr Jim Hesteriltä, ​​joka on nyt ohjelmistosuunnittelija RStudiossa.

Tarvitset tietysti Gmail-tilin, joka on ilmainen, jos sinulla ei ole sellaista. Sitten, ennen kuin voit käyttää kyseistä tiliä R: ltä, sinun on määritettävä se API-käyttöä varten. Näin.

Siirry osoitteeseen console.developers.google.com (kyllä, se on aliverkkotunnus). Jos sinulla ei vielä ole kehittäjäprojektia, sinua pyydetään luomaan se.

Hallintapaneelin yläosassa pitäisi näkyä vaihtoehto Ota käyttöön sovellusliittymät ja palvelut. Napsauta sitä.

Sharon Machlis,

Seuraavaksi haluat etsiä Gmail-sovellusliittymää. Napsauta sitä ja napsauta sitten Ota käyttöön.

R-komentosarja tarvitsee kirjautumistiedot, joten napsauta Luo kirjautumistiedot oikeassa yläkulmassa.

Sharon Machlis

Jim Hesterin ohjeiden mukaan tarvitsemme asiakastunnuksen, joten valitsen asiakastunnuksen.

Sharon Machlis,

Nyt se pyytää sovellustyyppiä. Koska R-komentosarjaa ei ole täällä, haluan valita Muu. Mutta kaikki radiopainikkeet ovat harmaita. Tämä johtuu siitä, että en ole määrittänyt suostumusnäyttöä. Sitä on helppo hukata, jos keskityt valintanapin valintoihin; se on oikeassa yläkulmassa. Napsauta sitä.

Sharon Machlis,

Sähköpostiosoitteesi tulisi olla jo suostumusnäytön muodossa. Ainoa toinen vaatimus on sovelluksen nimi. Voit kutsua sitä millä tahansa haluat.

Jim sanoo, että muut oletusarvot ovat kunnossa, joten selaa alaspäin ja tallenna. Nyt sinun on voitava valita Sovellustyyppi Muu, antaa sovellukselle nimi ja napsauttaa Luo.

Konsolin tulisi antaa sinulle asiakastunnus ja asiakassalaisuus. Voit käyttää niitä lisäämällä ne R-ympäristöön, jos haluat. Mutta Jim ehdottaa JSON-tiedoston lataamista sen sijaan. Voit ladata sen R-projektin työhakemistoon ja muistaa antamasi tiedostonimen.

Sharon Machlis,

Asennus Google-puolella on valmis, ja on vihdoin aika käyttää jotain R-koodia.

Varmista ensin, että gmailr-paketti on asennettu. Se on saatavana CRAN: lla, joten voit asentaa sen install.packages ("gmailr"). Lataa sitten paketti komentosarjaasi kirjasto (gmailr).

Ennen kuin teet mitään muuta, sinun on määritettävä työskentelevä R-istunto käyttämään ladattua JSON-tunnistetiedostoa. Voit tehdä sen use_secret_file () -funktio ja argumenttina JSON-tiedostosi nimi. Jos kutsuisin JSON-tunnistetiedostoni DoMoreWithR.json, komento olisi

use_secret_file ("DoMoreWithR.json")

Itse viestin lähettäminen on melko helppoa.

Joitakin esimerkkitietoja varten ladasin kuukausittain Yhdysvaltain työttömyysasteet ja loin sitten tekstimerkkijonon nimeltä latest_msg, joka sisältää tietoja viimeisimmästä työttömyysasteesta. Huomaa, että käytän alla olevassa koodissa liimapakettia koottaaksesi merkkijonon, jonka haluan viestiini, mutta se johtuu siitä, että haluan tehdä sen näin; liitä () tai liitä0 () toimivat yhtä hyvin.

Voit käyttää mitä tahansa R-luomaa dataa, jonka haluat sähköpostiviestissäsi. Jos haluat seurata minun omaani, tässä on koodi (tarvitset Pacman-paketin asennettuna):

pacman :: p_load (quantmod, liima, xts, dplyr, ggplot2)
getSymbols ("UNRATE", src = "FRED")

työttömyys <- coredata (UNRATE)

month_starting <- hakemisto (UNRATE)

sarjan_pituus <- pituus (työttömyys)

latest_msg <- liima ("Yhdysvaltain viimeisin työttömyysaste oli {työttömyys [sarjan_pituus]}, kuukaudesta alkaen {month_starting [series_length]}. Se on {työttömyys [sarjan_pituus] - työttömyys [sarjan_pituus - 1]} prosenttiyksikköä verrattuna edelliseen kuukausi.")

Seuraavaksi haluan luoda MIME-sähköpostiobjektin ja lisätä sitten osoitteen, osoitteen, aihe-tekstin ja viestin tekstin.

my_email_message%

osoitteeseen ("[email protected]")%>%

lähettäjältä ("[email protected]")%>%

aihe ("Oma testiviestini")%>%

text_body (viimeisin_msg)

Jos teet tämän ja tarkistat sitten my_email_message -rakenteen str (oma_teksti_viesti) huomaat, että se on luettelo luokan kanssa miimikko.

Kun olet luonut MIME-viestiobjektisi, voit lähettää sen Lähetä viesti() toiminto. Argumentti on vain MIME-objektini nimi, tässä tapauksessa minun_sähköposti_viesti. Joten koko komento tässä tapauksessa on

send_message (oma_postiviesti_viesti)

Kun suoritat send_message () -toiminnon ensimmäisen kerran, sinulta kysytään, haluatko tallentaa välimuistiin valtuutuksen R-istuntojen välillä. Ehdotan, että sanot kyllä. Kun suoritat tämän ensimmäisen kerran, sinua pyydetään myös selaimessasi valtuuttamaan R-komentosarjasi käyttämään Google-tiliäsi.

Voit tehdä enemmän gmailrilla. Yksi vaihtoehto on luoda HTML-viesti, jotta voit käyttää merkintöjä, kuten lihavoitu ja kursivoitu.

Tässä viestin rungossa on HTML-tyyppisiä kappalemerkkejä sekä lihavoitu ja kursiivi, ja lähetän sen työosoitteeni.

html_msg_text <- liima ("

Viimeisin Yhdysvaltain työttömyysaste oli

{työttömyys [sarjan_pituus]}, alkavan kuukauden aikana

{month_starting [series_length]}. Se on

{työttömyys [sarjan_pituus] - työttömyys [sarjan_pituus - 1]}

prosenttiyksikön ero edelliseen kuukauteen.

Tiedot Yhdysvaltain työtilastotoimistosta.

")
my_html_message%

osoitteeseen ("[email protected]")%>%

lähettäjältä ("[email protected]")%>%

aihe ("Oma testiviestini")%>%

html_body (html_msg_text)

send_message (oma_html_viesti)

Valitettavasti en tiedä tapaa sisällyttää R: stä luotu kuva suoraan viestin runkoon. Mutta on melko yksinkertaista sisällyttää yksi liitteenä.

Alla olevan komentosarjan yläosassa muutan työttömyysastetiedot tietokehykseksi, joka sisältää tietoja vuodesta 2000 ja uudemmista, jotta voin käyttää ggplot-kuvaajia sen piirtämiseen ja tallentaa sitten kaavion tiedostoon.

Tämä koodin seuraava osa on kuitenkin tärkeä tietää sähköpostin yhteydessä. Ensinnäkin, kuten aiemmin, luon tekstimerkkiviestin viestitekstini kanssa liimapaketilla. Uutta on kaksi viimeistä koodiriviä, jotka luovat MIME-objektini. Viimeinen rivi Liitä tiedosto(), liittää PNG-tiedostoni sähköpostiin. Yllä oleva rivi on tärkeä, jos haluat tekstin näkyvän sähköpostin rungossa. Ilman molempia text_body ()jaliitä_osa () tekstin teksti ei näy, kun liität tiedoston. Vain jotain muistaa.

Sitten voin käyttää samaa Lähetä viesti() toiminto sen lähettämiseksi.

un_df%

filter (month_starting> = as.Date ("2000-01-01"))%>%

nimeä uudelleen (työttömyys = UNRATE)

mygraph <- ggplot (un_df, aes (kuukaudenkäynnistys, työttömyys)) +

geom_line () +

ggtitle ("Yhdysvaltain kuukausittainen työttömyys") +

xlab ("Kuukauden aloitus") +

ylab ("")

ggsave ("työllisyys_graph.png")
msg_text <- liima ("Viimeisin Yhdysvaltain työttömyysaste oli {työttömyys [sarjan_pituus]}, kuukaudesta, joka alkaa {month_starting [series_length]}. Se on {työttömyys [sarjan_pituus] - työttömyys [sarjan_pituus - 1]} prosenttiyksikköä verrattuna edelliseen kuukausi. Kaavio tammikuun 2000 jälkeen käytetyistä tiedoista on liitteenä. ")

viesti2%

osoitteeseen ("[email protected]")%>%

lähettäjältä ("[email protected]")%>%

aihe ("Oma tekstiviestini ja siihen liitetty kaavio")%>%

text_body (msg_text)%>%

liite_osa (msg_teksti)%>%

attach_file ("työttömyyden_graafi.png")

send_message (viesti2)

Voit halutessasi käyttää toimintoa create_draft () luoda luonnosviesti Gmail-tilillesi, jos haluat tarkistaa sen ulkonäön ennen sen lähettämistä. Tässä tapauksessa, create_draft (viesti2) luo luonnoksen tiedostoliitteestäni.

Jos haluat nähdä, miten tämä kaikki näyttää toiminnalta, tutustu tämän artikkelin yläosassa olevaan videoon. Ja saat lisää R-vinkkejä siirtymällä Do More With R -videosivulle tai tutustumalla Do More With R YouTube -soittolistaan.