Programmēšana

Kā nosūtīt e-pastu no R un Gmail

Kādā R dzīves posmā jūs, iespējams, vēlēsities dalīties analīzes rezultātos ar kolēģiem, kuri neizmanto R. Ir daudz veidu, kā to izdarīt. Viens no vienkāršākajiem (un lētākajiem) ir rezultātu nosūtīšana pa e-pastu.

Bet sava veida skumji ir automatizēt visu analīzes darbplūsmu, tikai beigās manuāli izveidot un nosūtīt e-pastu. Par laimi jums tas nav jādara. Ir vairākas R paketes, kas ļauj nosūtīt e-pastu tieši no R skripta. Šajā rakstā es demonstrēšu vienu no tiem: Džima Hestera, kurš tagad ir RStudio programmatūras inženieris, gmailr.

Acīmredzot jums būs nepieciešams Gmail konts, kuru var brīvi iestatīt, ja jums tāda nav. Pēc tam, pirms varat izmantot šo R kontu, jums tas ir jāiestata, lai piekļūtu API. Lūk, kā.

Atveriet vietni console.developers.google.com (jā, tas ir apakšdomēns). Ja jums vēl nav izstrādātāja projekta, jums tiks lūgts to izveidot.

Informācijas paneļa augšdaļā ir redzama izvēle “Iespējot API un pakalpojumus”. Noklikšķiniet uz tā.

Sharon Machlis,

Pēc tam vēlaties meklēt Gmail API. Noklikšķiniet uz tā un pēc tam noklikšķiniet uz Iespējot.

R skriptam būs nepieciešami akreditācijas dati, tāpēc augšējā labajā stūrī noklikšķiniet uz Izveidot akreditācijas datus.

Šarona Mačlisa

Saskaņā ar Džima Hestera norādījumiem mums ir nepieciešams klienta ID, tāpēc es izvēlēšos klienta ID.

Sharon Machlis,

Tagad tiek pieprasīts lietotnes veids. Tā kā šeit nav “R skripta”, es vēlos izvēlēties “Cits”. Bet visas radio pogas ir pelēkotas. Tas ir tāpēc, ka es neesmu konfigurējis piekrišanas ekrānu. Tas ir viegli palaist garām, ja esat koncentrējies uz radiopogas izvēli; tas atrodas augšējā labajā stūrī. Noklikšķiniet uz tā.

Sharon Machlis,

Jūsu e-pasta adresei jau jābūt piekrišanas ekrāna formā. Vienīgā prasība ir lietojumprogrammas nosaukums. Jūs to varat saukt par visu, kas jums patīk.

Džims saka, ka pārējie noklusējumi ir labi, tāpēc ritiniet uz leju un saglabājiet. Tagad jums vajadzētu būt iespējai atlasīt Lietojumprogrammas tips Cits, piešķirt lietojumprogrammai nosaukumu un noklikšķiniet uz Izveidot.

Pēc tam konsolei jums jānorāda klienta ID un klienta noslēpums. Ja vēlaties, varat tos izmantot, pievienojot tos savai R videi. Bet Džims iesaka tā vietā lejupielādēt JSON failu. To varat lejupielādēt savā R projekta darba direktorijā un atcerēties faila nosaukumu, kuru tam piešķirāt.

Sharon Machlis,

Tas ir pabeidzis iestatīšanu Google pusē, un beidzot ir pienācis laiks izmantot kādu R kodu.

Vispirms pārliecinieties, vai esat instalējis paketi gmailr. Tas ir pieejams CRAN, lai jūs to varētu instalēt install.packages ("gmailr"). Pēc tam ielādējiet pakotni savā skriptā ar bibliotēka (gmailr).

Pirms darīt kaut ko citu, vēlēsities iestatīt darba R sesiju, lai izmantotu lejupielādēto JSON akreditācijas datu failu. To var izdarīt ar use_secret_file () funkcija un JSON faila nosaukums kā arguments. Ja es izsauktu savu JSON akreditācijas datu failu DoMoreWithR.json, komanda būtu

use_secret_file ("DoMoreWithR.json")

Patiesībā īsziņas sūtīšana ir diezgan vienkārša.

Dažiem datu paraugiem es lejupielādēju ikmēneša ASV bezdarba līmeni un pēc tam izveidoju teksta virkni ar nosaukumu latest_msg ar informāciju par jaunāko bezdarba līmeni. Ņemiet vērā, ka zemāk esošajā kodā es izmantoju līme paketi, lai savāktu vēlamo rakstzīmju virkni savam ziņojumam, bet tas ir tāpēc, ka man patīk to darīt šādā veidā; ielīmēt () vai paste0 () strādā vienlīdz labi.

E-pasta ziņojumā varat izmantot visus R ģenerētos datus. Ja vēlaties sekot līdzi manējam, šeit ir kods (jums būs jāinstalē Pacman pakotne):

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

bezdarbs <- coredata (UNRATE)

month_starting <- indekss (UNRATE)

sērijas_length <- garums (bezdarbs)

latest_msg <- līme ("Jaunākais ASV bezdarba līmenis bija {nedarbs [sērijas_length]} mēnesī, sākot no {month_starting [series_length]}. Tas ir {bezdarbības [sērijas_length] - bezdarbs [sērijas_length - 1]} procentu punktu starpība salīdzinājumā ar iepriekšējo mēnesī. ")

Pēc tam es vēlos izveidot MIME e-pasta objektu un pēc tam pievienot adresei a, adresi no adreses, tēmas tekstu un ziņojuma pamattekstu.

my_email_message%

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

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

tēma ("Mans testa ziņojums")%>%

text_body (latest_msg)

Ja jūs to darāt un pēc tam pārbaudiet my_email_message struktūru ar str (my_text_message) jūs redzētu, ka tas ir saraksts ar klasi mīma.

Pēc sava MIME ziņojuma objekta izveides varat to nosūtīt ar sūtīt ziņu() funkciju. Arguments ir tikai mana MIME objekta nosaukums, šajā gadījumā my_email_message. Tātad pilnīga komanda šajā gadījumā ir

send_message (mans_pasta_ziņa)

Pirmo reizi palaižot send_message (), iespējams, jums tiks vaicāts, vai vēlaties saglabāt kešatmiņā autorizāciju starp R sesijām. Es iesaku jums pateikt jā. Pirmo reizi to palaižot, pārlūkprogrammā jums tiks lūgts atļaut jūsu R skriptam izmantot jūsu Google kontu.

Ar gmailr var izdarīt vēl vairāk. Viena no iespējām ir izveidot HTML ziņojumu, lai jūs varētu izmantot iezīmes, piemēram, treknrakstā un kursīvā.

Šeit manā ziņojuma pamattekstā ir HTML līdzīgas rindkopu zīmes un treknrakstā un kursīvā, un es to nosūtīšu uz savu darba adresi.

html_msg_text <- līme ("

Pēdējais ASV bezdarba līmenis bija

{bezdarbs [sērijas_ garums]}, mēnesī, kas sākas

{month_starting [series_length]}. Tas ir

{bezdarbs [sērijas_ garums] - bezdarbs [sērijas_ garums - 1]}

procentu punktu starpība no iepriekšējā mēneša.

Dati no ASV Darba statistikas biroja.

")
my_html_message%

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

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

tēma ("Mans testa ziņojums")%>%

html_body (html_msg_text)

send_message (my_html_message)

Diemžēl es nezinu veidu, kā viegli iekļaut attēlu, kas ģenerēts no R, tieši ziņojuma pamattekstā. Bet ir diezgan vienkārši iekļaut vienu kā pielikumu.

Zemāk esošā skripta augšdaļā savus bezdarba līmeņa datus pārvērstu datu rāmī ar metriku no 2000. gada un vēlāk, tāpēc es varu izmantot ggplot, lai to attēlotu un pēc tam saglabātu diagrammu failā.

Šī nākamā koda daļa tomēr ir jāzina e-pastam. Pirmkārt, tāpat kā iepriekš, es izveidoju teksta virkni savam ziņojuma tekstam ar līmes iepakojumu. Jaunums ir pēdējās divas koda rindiņas, kas izveido manu MIME objektu. Šī pēdējā rinda, Pievienot failu(), pievieno manu PNG failu e-pastam. Iepriekšējā rindiņa ir svarīga, ja vēlaties, lai teksts tiktu parādīts e-pasta pamattekstā. Neizmantojot abus text_body ()unpievienot_daļu () pamattekstā teksts neparādīsies, kad pievienosit failu. Tikai kaut kas jāatceras.

Tad es varu izmantot to pašu sūtīt ziņu() funkcija to nosūtīt.

un_df%

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

pārdēvēt (bezdarbs = UNRATE)

mygraph <- ggplot (un_df, aes (mēneša sākums, bezdarbs)) +

geom_line () +

ggtitle ("ASV ikmēneša bezdarbs") +

xlab ("Mēneša sākums") +

ylab ("")

ggsave ("ployment_graph.png ")
msg_text <- līme ("Jaunākais ASV bezdarba līmenis bija {nedarbs [sērijas_length]} mēnesī, sākot no {month_starting [series_length]}. Tā ir {bezdarbība [sērijas_length] - bezdarbība [sērijas_length - 1]} procentu punktu starpība no iepriekšējās mēnesī. Ir pievienots datu grafiks kopš 2000. gada janvāra. ")

message2%

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

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

tēma ("Mana īsziņa ar pievienotu diagrammu")%>%

text_body (msg_text)%>%

attach_part (msg_text)%>%

attach_file ("nedarbs_graph.png")

send_message (ziņojums2)

Ja vēlaties, varat izmantot funkciju izveidot_draftu () lai izveidotu ziņojuma melnrakstu savā Gmail kontā, ja pirms tā izsūtīšanas vēlaties pārbaudīt tā izskatu. Šajā gadījumā, izveidot_draftu (ziņojums2) izveidotu mana faila pielikuma ziņojuma melnrakstu.

Ja vēlaties redzēt, kā tas viss izskatās darbībā, skatiet videoklipu šī raksta augšdaļā. Lai iegūtu vairāk R padomu, dodieties uz lapu Do More With R video vai skatiet atskaņošanas sarakstu Do More With R YouTube.

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