Programavimas

Kaip siųsti el. Laiškus iš „R“ ir „Gmail“

Tam tikru R gyvenimo momentu tikriausiai norėsite pasidalinti savo analizės rezultatais su kolegomis, nenaudojančiais R. Yra daugybė būdų tai padaryti. Vienas iš paprasčiausių (ir nebrangiausių) yra rezultatų siuntimas el. Paštu.

Bet liūdna automatizuoti visą analizės darbo eigą, tik rankiniu būdu sukurti ir išsiųsti el. Laišką pabaigoje. Laimei, nereikia. Yra keletas R paketų, leidžiančių siųsti el. Laiškus tiesiai iš R scenarijaus. Šiame straipsnyje aš pademonstruosiu vieną iš jų: „Jmail Hester“, kuris dabar yra „RStudio“ programinės įrangos inžinierius, „gmailr“.

Akivaizdu, kad jums reikės „Gmail“ paskyros, kurią galėsite nemokamai nustatyti, jei jos neturite. Tada, prieš naudodamiesi ta „R“ paskyra, turėsite nustatyti ją prieigai prie API. Štai kaip.

Eikite į console.developers.google.com (taip, tai yra padomenis). Jei dar neturite kūrėjo projekto, jūsų bus paprašyta jį sukurti.

Informacijos suvestinės viršuje turėtumėte pamatyti pasirinkimą „Įgalinti API ir paslaugas“. Spustelėkite tą.

Sharon Machlis,

Tada norėsite ieškoti „Gmail“ API. Spustelėkite tai, tada spustelėkite Įgalinti.

R scenarijui reikės kredencialų, todėl viršuje dešinėje spustelėkite Sukurti kredencialus.

Sharon Machlis

Pagal Jimo Hesterio nurodymus mums reikalingas kliento ID, todėl aš pasirinksiu kliento ID.

Sharon Machlis,

Dabar prašoma įvesti programos tipą. Kadangi „R scenarijaus“ čia nėra, noriu pasirinkti „Kitas“. Bet visi radijo mygtukai yra pilki. Taip yra todėl, kad nesukonfigūravau sutikimo ekrano. Tai lengva praleisti, jei esate sutelktas į radijo mygtuko pasirinkimą; jis yra viršuje dešinėje. Spustelėkite tą.

Sharon Machlis,

Jūsų el. Pašto adresas jau turėtų būti pateiktas sutikimo ekrano formoje. Vienintelis kitas reikalavimas yra programos pavadinimas. Galite tai vadinti taip, kaip jums patinka.

Jimas sako, kad likusi numatytoji dalis yra tinkama, todėl slinkite žemyn ir išsaugokite. Dabar turėtumėte galėti pasirinkti Programos tipas Kita, suteikti programai pavadinimą ir spustelėti Kurti.

Tada konsolė turėtų suteikti jums kliento ID ir kliento paslaptį. Jei norite, galite juos naudoti pridėdami juos prie savo R aplinkos. Tačiau Jimas siūlo atsisiųsti JSON failą. Galite atsisiųsti į savo R projekto darbo katalogą ir prisiminti nurodytą failo pavadinimą.

Sharon Machlis,

Tai baigs sąranką „Google“ pusėje, ir pagaliau atėjo laikas naudoti tam tikrą R kodą.

Pirmiausia įsitikinkite, kad įdiegėte „gmailr“ paketą. Jis pasiekiamas CRAN, todėl galite jį įdiegti naudodami install.packages ("gmailr"). Tada įkelkite paketą į savo scenarijų su biblioteka (gmailr).

Prieš atlikdami bet ką kitą, norėsite nustatyti savo darbinę R sesiją, kad būtų naudojamas atsisiųstas JSON kredencialų failas. Tai galite padaryti naudodami use_secret_file () funkcija ir JSON failo pavadinimas kaip argumentas. Jei paskambinčiau į savo JSON kredencialų failą „DoMoreWithR.json“, komanda būtų

use_secret_file ("DoMoreWithR.json")

Iš tikrųjų siųsti žinutę yra gana lengva.

Kai kuriuos pavyzdinius duomenis atsisiunčiau mėnesinius JAV nedarbo rodiklius, tada sukūriau tekstinę eilutę pavadinimu „latest_msg“ su informacija apie naujausią nedarbo lygį. Atkreipkite dėmesį, kad žemiau esančiame kode aš naudoju klijų paketą, norėdamas surinkti norimą simbolių eilutę savo pranešimui, bet taip yra todėl, kad man patinka tai daryti; įklijuoti () arba įklijuoti0 () dirbti vienodai gerai.

Savo el. Laiške galite naudoti visus norimus R sugeneruotus duomenis. Jei norėtumėte sekti kartu su mano, čia yra kodas (jums reikės įdiegti „Pacman“ paketą):

pacman :: p_load (quantmod, klijai, xts, dplyr, ggplot2)
„getSymbols“ („UNRATE“, src = „FRED“)

nedarbas <- coredata (UNRATE)

month_starting <- rodyklė (UNRATE)

serijos_ ilgis <- ilgis (nedarbas)

naujausias_msg <- klijai ("Paskutinis JAV nedarbo lygis buvo {nedarbas [serijos_length]}, mėnesį pradedant nuo {month_starting [series_length]}. Tai yra {nedarbo [serijos_length] - nedarbas [serijos_length - 1]} procentinių punktų skirtumas nuo ankstesnio mėnesį. ")

Tada noriu sukurti el. Pašto objektą MIME, tada pridėti adresą, adresą iš adreso, temos tekstą ir pranešimo turinį.

mano_pašto_pranešimas%

į („[email protected]“)%>%

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

tema („Mano bandomasis pranešimas“)%>%

text_body (naujausias_msg)

Jei tai padarysite, tada patikrinkite „my_email_message“ struktūrą str (my_text_message) pamatytumėte, kad tai sąrašas su klase mimika.

Sukūrę savo MIME pranešimo objektą, galite jį nusiųsti su Siųsti žinutę() funkcija. Argumentas yra tik mano MIME objekto pavadinimas, šiuo atveju mano_el.laiškas_ žinutė. Taigi visa komanda šiuo atveju yra

send_message (my_email_message)

Kai pirmą kartą paleisite send_message (), jūsų tikriausiai bus klausiama, ar norite tarpinės sesijos metu išsaugoti autorizaciją. Siūlau pasakyti „taip“. Pirmą kartą paleidus tai, jūsų naršyklėje jūsų taip pat bus paprašyta leisti jūsų R scenarijui naudoti jūsų „Google“ paskyrą.

Su gmailr galite padaryti daugiau. Viena iš galimybių yra sukurti HTML pranešimą, kad galėtumėte naudoti žymėjimą, pavyzdžiui, paryškintą ir kursyvą.

Čia mano pranešimo tekste yra į HTML panašūs pastraipų ženklai, pusjuodis ir kursyvas, ir aš jį išsiųsiu savo darbo adresu.

html_msg_text <- Klijai ("

Paskutinis JAV nedarbo lygis buvo

{nedarbas [serijos_ ilgis]}, prasidėjusį mėnesį

{month_starting [series_length]}. Tai

{nedarbas [serijos_ ilgis] - nedarbas [serijos_ ilgis - 1]}

procentinių punktų skirtumas nuo praėjusio mėnesio.

JAV darbo statistikos biuro duomenys.

")
my_html_message%

į („[email protected]“)%>%

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

tema („Mano bandomasis pranešimas“)%>%

html_body (html_msg_text)

send_message (my_html_message)

Deja, aš nežinau, kaip lengvai įtraukti iš R sugeneruotą vaizdą tiesiai į pranešimo turinį. Bet gana paprasta įtraukti vieną kaip priedą.

Žemiau esančio scenarijaus viršuje savo nedarbo lygio duomenis paverčiu duomenų rėmeliu, kuriame pateikiama 2000 m. Ir vėlesnių metrikų informacija, kad galėčiau naudoti „ggplot“, kad ją pavaizduotų, o tada išsaugoti diagramą faile.

Vis dėlto šią kitą kodo dalį svarbu žinoti el. Paštu. Pirmiausia, kaip ir anksčiau, kuriu teksto eilutę savo pranešimo tekstui su klijų paketu. Nauja yra dvi paskutinės kodo eilutės, sukuriančios mano MIME objektą. Paskutinė eilutė Pridėti failą(), prie el. pašto prideda mano PNG failą. Ankstesnė eilutė yra svarbi, jei norite, kad tekstas būtų rodomas el. Laiško tekste. Nenaudojant abiejų text_body ()irpridėti_dalį () pagrindiniame tekste tekstas nebus rodomas, kai pridėsite failą. Tik ką atsiminti.

Tada galiu naudoti tą patį Siųsti žinutę() funkcija ją siųsti.

un_df%

filtras (mėnesio pradžia> = kaip. Data ("2000-01-01"))%>%

pervadinti (nedarbas = UNRATE)

mygraph <- ggplot (un_df, aes (mėnesio pradžia, nedarbas)) +

geom_line () +

ggtitle ("JAV mėnesinis nedarbas") +

xlab ("Mėnesio pradžia") +

ylab ("")

ggsave ("nedarbo_graph.png")
msg_text <- adhesive ("Paskutinis JAV nedarbo lygis buvo {nedarbas [serijos_length]}, mėnesį pradedant nuo {month_starting [series_length]}. Tai yra {nedarbo [serijos_length] - nedarbas [serijos_length - 1]} procentinių punktų skirtumas nuo ankstesnio mėnuo. Pridedamas duomenų grafikas nuo 2000 m. sausio mėn. ")

message2%

į („[email protected]“)%>%

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

tema („Mano tekstinis pranešimas su pridėtu grafiku“)%>%

text_body (msg_text)%>%

pridėti_dalis (msg_text)%>%

attach_file ("nedarbo_graph.png")

send_message (message2)

Jei norite, galite naudoti šią funkciją sukurti_draftą () sukurti pranešimo juodraštį „Gmail“ paskyroje, jei prieš išsiųsdami norėtumėte patikrinti, kaip jis atrodo. Tokiu atveju, create_draft (message2) sukurs mano failo-priedo pranešimo juodraštį.

Jei norite pamatyti, kaip visa tai atrodo, žiūrėkite vaizdo įrašą šio straipsnio viršuje. Norėdami gauti daugiau „R“ patarimų, eikite į „Do More With R“ vaizdo įrašo puslapį arba peržiūrėkite „Do More With R YouTube“ grojaraštį.