Programiranje

Kako poslati e-pošto z R in Gmaila

Na neki točki svojega življenja R boste verjetno želeli deliti rezultate svoje analize s kolegi, ki ne uporabljajo R. Za to obstaja veliko načinov. Eno najlažjih (in najcenejših) je pošiljanje rezultatov po e-pošti.

A nekako žalostno je avtomatizirati celoten potek analize, le da na koncu ročno izdelate in pošljete e-pošto. Na srečo vam ni treba. Obstaja več paketov R, ki vam omogočajo pošiljanje e-pošte neposredno iz skripta R. V tem članku bom predstavil enega izmed njih: gmailr Jima Hesterja, ki je zdaj programski inženir pri RStudio.

Očitno boste potrebovali račun za Gmail, ki ga lahko brezplačno nastavite, če ga nimate. Potem, preden boste lahko uporabljali ta račun iz R, ga boste morali nastaviti za dostop do API-ja. Evo kako.

Odprite console.developers.google.com (da, to je poddomena). Če še nimate projekta za razvijalce, boste pozvani, da ga ustvarite.

Na vrhu nadzorne plošče bi morali videti možnost »Omogoči API-je in storitve«. Kliknite to.

Sharon Machlis,

Nato boste iskali Gmail API. Kliknite to in nato Omogoči.

Za skript R bodo potrebne poverilnice, zato zgoraj desno kliknite Ustvari poverilnice.

Sharon Machlis

V skladu z navodili Jima Hesterja potrebujemo ID stranke, zato bom izbral ID stranke.

Sharon Machlis,

Zdaj prosi za vrsto prijave. Ker »R script« ni tukaj, želim izbrati »Other«. Toda vsi izbirni gumbi so sivi. To pa zato, ker nisem konfiguriral zaslona za soglasje. Tega je enostavno zamuditi, če ste osredotočeni na izbiro radijskih gumbov; je zgoraj desno. Kliknite to.

Sharon Machlis,

Vaš e-poštni naslov bi že moral biti v obliki zaslona za soglasje. Edina druga zahteva je ime aplikacije. Lahko mu rečete kakor koli želite.

Jim pravi, da so ostale privzete nastavitve v redu, zato se pomaknite navzdol in shranite. Zdaj bi morali imeti možnost, da izberete vrsto aplikacije Drugo, dajte aplikaciji ime in kliknite Ustvari.

Nato vam mora konzola dati ID stranke in skrivnost odjemalca. Če jih želite, jih lahko uporabite tako, da jih dodate v svoje okolje R. Jim pa predlaga, da namesto tega prenesete datoteko JSON. To lahko prenesete v svoj delovni imenik projekta R in si zapomnite ime datoteke, ki ste ji jo dali.

Sharon Machlis,

S tem se konča namestitev na Googlovi strani in končno je čas za nekaj R-kode.

Najprej preverite, ali imate nameščen paket gmailr. Na voljo je v CRAN-u, zato ga lahko namestite z install.packages ("gmailr"). Nato naložite paket v svoj skript z knjižnica (gmailr).

Preden začnete kar koli drugega, nastavite svojo delovno sejo R za uporabo prenesene datoteke z poverilnicami JSON. To lahko storite z use_secret_file () in ime datoteke JSON kot argument. Če bi svojo poverilnico JSON poklical DoMoreWithR.json, bi bil ukaz

use_secret_file ("DoMoreWithR.json")

Dejansko je pošiljanje sporočila dokaj enostavno.

Za nekatere vzorčne podatke sem prenesel mesečne stopnje brezposelnosti v ZDA in nato ustvaril besedilni niz z imenom latest_msg z informacijami o najnovejši stopnji brezposelnosti. Upoštevajte, da v spodnji kodi uporabljam paket lepila za sestavljanje znakovnega niza, ki ga želim za svoje sporočilo, a to je zato, ker to rad počnem; prilepi () ali prilepi0 () delujejo enako dobro.

V svojem e-poštnem sporočilu lahko uporabite poljubne podatke, ustvarjene z R. Če želite slediti mojemu, je tukaj koda (za namestitev potrebujete paket pacman):

pacman :: p_load (kvantmod, lepilo, xts, dplyr, ggplot2)
getSymbols ("UNRATE", src = "FRED")

brezposelnost <- coredata (UNRATE)

month_starting <- indeks (UNRATE)

series_length <- dolžina (brezposelnost)

latest_msg <- lepilo ("Najnovejša stopnja brezposelnosti v ZDA je bila {brezposelnost [serija_dolžina]}, v mesecu, ki se je začel {mesec_začetka [serija_dolžina]}. To je {brezposelnost [serija_dolžina] - brezposelnost [serija_dolžina - 1]} odstotne točke razlike v primerjavi s prejšnjim mesec. ")

Nato želim ustvariti e-poštni objekt MIME in nato dodati naslov na naslov, naslov z naslova, besedilo teme in telo sporočila.

my_email_message%

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

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

subject ("Moje testno sporočilo")%>%

text_body (latest_msg)

Če to storite in nato s pomočjo preverite strukturo my_email_message str (moje_besedilo_poruka) videli bi, da gre za seznam z razredom mimika.

Po ustvarjanju predmeta sporočila MIME ga lahko pošljete z Pošlji sporočilo() funkcijo. Argument je samo ime mojega predmeta MIME, v tem primeru my_email_message. Celoten ukaz v tem primeru je

send_message (my_email_message)

Ko prvič zaženete send_message (), boste verjetno vprašani, ali želite predpomniti avtorizacijo med R sejami. Predlagam, da rečete da. Ko prvič zaženete to, boste v brskalniku pozvani tudi, da vašemu skriptu R dovoli uporabo vašega Google Računa.

Z gmailrjem lahko storite še več. Ena od možnosti je ustvariti sporočilo HTML, tako da lahko uporabite oznake, kot so krepko in ležeče.

Tukaj moje telo sporočila vključuje oznake odstavkov, podobne HTML-ju, krepko in ležeče, in jih bom poslal na svoj službeni naslov.

html_msg_text <- lepilo ("

Najnovejša stopnja brezposelnosti v ZDA je bila

{brezposelnost [dolžina_serije]}, v mesecu, ki se začne

{mesec_zagon [dolžina_serije]}. To je

{brezposelnost [serija_dolžina] - brezposelnost [serija_dolžina - 1]}

odstotne točke razlike v primerjavi s preteklim mesecem.

Podatki ameriškega urada za statistiko dela.

")
my_html_message%

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

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

subject ("Moje testno sporočilo")%>%

html_body (html_msg_text)

send_message (my_html_message)

Na žalost ne vem, kako bi sliko, ustvarjeno iz R, zlahka vključili neposredno v telo sporočila. A enostavnega je vključiti enega kot prilogo.

Na vrhu spodnjega skripta spremenim podatke o stopnji brezposelnosti v podatkovni okvir z meritvami iz leta 2000 in novejših, tako da lahko z grafičnim prikazom ggplot nato shranim graf v datoteko.

Ta naslednji del kode je tisto, kar je pomembno vedeti za e-pošto. Najprej, tako kot prej, s paketom lepila ustvarjam besedilni niz za besedilo sporočila. Novost sta zadnji dve vrstici kode, ki ustvarjata moj objekt MIME. Ta zadnja vrstica, priložite datoteko(), priloži mojo datoteko PNG e-pošti. Prejšnja vrstica je pomembna, če želite, da se besedilo prikaže v telesu e-pošte. Brez uporabe obeh text_body ()inpriloži_del () za osnovno besedilo se besedilo ne prikaže, ko priložite datoteko. Samo nekaj zapomniti.

Potem lahko uporabim isto Pošlji sporočilo() funkcija za pošiljanje.

un_df%

filter (začetek_meseca> = as.Date ("01.01.2000"))%>%

preimenovati (brezposelnost = NEVERJAT)

mygraph <- ggplot (un_df, aes (začetek meseca, brezposelnost)) +

geom_line () +

ggtitle ("Mesečna brezposelnost v ZDA") +

xlab ("Mesec se začne") +

ylab ("")

ggsave ("brezposelnost_graf.png")
msg_text <- lepilo ("Najnovejša stopnja brezposelnosti v ZDA je bila {brezposelnost [serija_dolžina]}, v mesecu, ki se je začel {mesec_začetka [serija_dolžina]}. To je {brezposelnost [serija_dolžina] - brezposelnost [dolžina_serije - 1]} odstotne točke v primerjavi s prejšnjim mesec. Priložen je graf podatkov od januarja 2000. ")

sporočilo2%

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

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

subject ("Moje besedilno sporočilo s priloženim grafom")%>%

text_body (msg_text)%>%

priloži_del (besedilo_srga)%>%

attach_file ("brezposelnost_graf.png")

send_message (message2)

Če želite, lahko uporabite funkcijo create_draft () če želite v svojem Gmail računu ustvariti osnutek sporočila, če želite pred pošiljanjem preveriti, kako izgleda. V tem primeru, create_draft (message2) bi ustvaril osnutek mojega sporočila o priponki.

Če želite videti, kako vse to izgleda v akciji, si oglejte video na vrhu tega članka. Če želite več nasvetov R, pojdite na video stran Naredite več z R ali si oglejte seznam predvajanja Naredite več z R YouTube.

$config[zx-auto] not found$config[zx-overlay] not found