Programovanie

Ako posielať e-maily z R a Gmail

V určitom okamihu svojho života v R budete pravdepodobne chcieť zdieľať výsledky svojej analýzy s kolegami, ktorí nepoužívajú R. Existuje veľa spôsobov, ako to urobiť. Jedným z najjednoduchších (a najmenej nákladných) je zasielanie vašich výsledkov e-mailom.

Je však smutné automatizovať celý pracovný postup analýzy, iba manuálne vytvoriť a na konci poslať e-mail. Našťastie nemusíte. Existuje niekoľko R balíkov, ktoré vám umožňujú posielať e-maily priamo z R skriptu. V tomto článku ukážem jednu z nich: gmailr od Jima Hestera, ktorý je teraz softvérovým inžinierom v spoločnosti RStudio.

Je zrejmé, že budete potrebovať účet Gmail, ktorý si môžete bezplatne nastaviť, ak ho nemáte. Predtým, ako budete môcť použiť tento účet z jazyka R, musíte ho nastaviť na prístup k rozhraniu API. Tu je postup.

Prejdite na stránku console.developers.google.com (áno, jedná sa o subdoménu). Ak ešte nemáte vývojársky projekt, zobrazí sa výzva na jeho vytvorenie.

V hornej časti informačného panela by sa mala zobraziť možnosť Povoliť rozhrania API a služby. Kliknite na to.

Sharon Machlis,

Ďalej budete chcieť vyhľadať rozhranie Gmail API. Kliknite na to a potom kliknite na Povoliť.

Skript R bude vyžadovať poverenia, takže kliknite vpravo hore na položku Vytvoriť poverenia.

Sharon Machlis

Podľa pokynov Jima Hestera potrebujeme ID klienta, takže si vyberiem ID klienta.

Sharon Machlis,

Teraz žiada typ aplikácie. Pretože „skript R“ tu nie je, chcem zvoliť možnosť „Iné“. Všetky prepínače sú však sivé. Je to preto, že som nenakonfiguroval obrazovku súhlasu. To ľahko prehliadnete, ak sa zameriavate na výber prepínača; je to vpravo hore. Kliknite na to.

Sharon Machlis,

Vaša e-mailová adresa by už mala byť vo forme obrazovky na získanie súhlasu. Jedinou ďalšou požiadavkou je názov aplikácie. Môžete to nazvať akokoľvek chcete.

Jim hovorí, že zvyšok predvolených nastavení je v poriadku, takže posuňte zobrazenie nadol a uložte. Teraz by ste mali byť schopní zvoliť Typ aplikácie Iné, pomenovať aplikáciu a kliknúť na Vytvoriť.

Konzola by vám potom mala poskytnúť ID klienta a tajomstvo klienta. Môžete ich použiť tak, že ich prípadne pridáte do svojho prostredia R. Ale Jim navrhuje namiesto toho stiahnuť súbor JSON. Môžete si ich stiahnuť do svojho pracovného adresára projektu R a zapamätať si názov súboru, ktorý ste zadali.

Sharon Machlis,

Týmto sa dokončuje nastavenie na strane Google a konečne je čas na nejaký R kód.

Najskôr sa uistite, že máte nainštalovaný balík gmailr. Je k dispozícii v systéme CRAN, takže ho môžete nainštalovať pomocou install.packages ("gmailr"). Potom vložte balík do svojho skriptu pomocou knižnica (gmailr).

Predtým, ako urobíte čokoľvek iné, budete chcieť nastaviť pracovnú reláciu typu R, aby mohla používať stiahnutý súbor poverení JSON. Môžete to urobiť pomocou use_secret_file () funkcia a názov vášho súboru JSON ako argumentu. Keby som zavolal svoj súbor poverení JSON DoMoreWithR.json, príkaz by bol

use_secret_file ("DoMoreWithR.json")

Odosielanie správ je v skutočnosti celkom jednoduché.

Pre niektoré vzorové údaje som si stiahol mesačné miery nezamestnanosti v USA a potom som vytvoril textový reťazec s názvom latest_msg s informáciami o najnovšej miere nezamestnanosti. Všimnite si, že v kóde nižšie používam balík lepidla na zostavenie reťazca znakov, ktorý chcem pre svoju správu, ale je to preto, že to robím takto; vložiť () alebo paste0 () pracovať rovnako dobre.

Vo svojej e-mailovej správe môžete použiť ľubovoľné údaje generované písmenom R. Ak by ste chceli postupovať podľa toho môjho, tu je kód (budete potrebovať nainštalovaný balík pacman):

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

nezamestnanosť <- coredata (UNRATE)

month_starting <- index (UNRATE)

dĺžka_série <- dĺžka (nezamestnanosť)

latest_msg <- lepidlo ("Najnovšia miera nezamestnanosti v USA bola {nezamestnanosť [dĺžka_série]}, v mesiaci začínajúcom {month_starting [series_length]}. To je rozdiel medzi {nezamestnanosťou [dĺžka_série] - nezamestnanosťou [dĺžka_série - 1]} oproti predchádzajúcej mesiac. “)

Ďalej chcem vytvoriť e-mailový objekt MIME a potom pridať adresu do, adresu z, text predmetu a telo správy.

my_email_message%

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

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

predmet ("Moja testovacia správa")%>%

text_body (latest_msg)

Ak to urobíte a potom skontrolujete štruktúru my_email_message pomocou str (my_text_message) videli by ste, že je to zoznam s triedou mim.

Po vytvorení vášho objektu správy MIME ho môžete poslať pomocou poslať správu() funkcia. Argument je iba názov môjho objektu MIME, v tomto prípade my_email_message. Takže úplný príkaz v tomto prípade je

send_message (my_email_message)

Pri prvom spustení send_message () sa pravdepodobne zobrazí otázka, či chcete uložiť autorizáciu do pamäte medzi reláciami R. Navrhujem, aby ste povedali áno. Pri prvom spustení sa vo vašom prehliadači zobrazí výzva na autorizáciu vášho skriptu R na použitie vášho účtu Google.

S gmailr môžete robiť viac. Jednou z možností je vytvoriť správu HTML, takže môžete používať značky ako tučné a kurzíva.

Moje telo správy obsahuje značky odseku podobné HTML, tučné písmo a kurzíva, ktoré pošlem na svoju pracovnú adresu.

html_msg_text <- lepidlo ("

Posledná miera nezamestnanosti v USA bola

{nezamestnanosť [dĺžka_série]}, v začatom mesiaci

{month_starting [series_length]}. To je

{nezamestnanosť [dĺžka_série] - nezamestnanosť [dĺžka_série - 1]}

rozdiel percentuálnych bodov oproti predchádzajúcemu mesiacu.

Údaje z amerického úradu pre štatistiku práce.

")
my_html_message%

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

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

predmet ("Moja testovacia správa")%>%

html_body (html_msg_text)

send_message (my_html_message)

Bohužiaľ nepoznám spôsob, ako ľahko zahrnúť obrázok vygenerovaný z R priamo do tela správy. Je však celkom jednoduché zahrnúť jeden ako prílohu.

V hornej časti nižšie uvedeného skriptu premieňam svoje údaje o miere nezamestnanosti na dátový rámec s metrikami od roku 2000 a neskôr, takže na ich vytvorenie môžem použiť ggplot a potom graf uložiť do súboru.

Pre e-mail je však dôležité vedieť túto ďalšiu časť kódu. Najskôr, ako predtým, vytváram textový reťazec pre text svojej správy s balíkom lepidla. Novinkou sú posledné dva riadky kódu, ktoré vytvárajú môj objekt MIME. Ten posledný riadok, Priložiť súbor(), pripojí môj PNG súbor k e-mailu. Riadok predtým je dôležitý, ak chcete, aby sa text zobrazoval v tele e-mailu. Bez použitia oboch text_body ()aattach_part () pre hlavný text sa text nezobrazí, keď pripojíte súbor. Len niečo na zapamätanie.

Potom môžem použiť to isté poslať správu() funkciu odoslať.

un_df%

filter (začiatok_mesiaca> = ako.dátum ("2000-01-01"))%>%

premenovať (nezamestnanosť = UNRATE)

mygraph <- ggplot (un_df, aes (začiatok_mesiaca, nezamestnanosť)) +

geom_line () +

ggtitle ("Mesačná nezamestnanosť v USA") +

xlab ("Od začiatku mesiaca") +

ylab ("")

ggsave ("nezamestnanost_graf.png")
msg_text <- lepidlo ("Najnovšia miera nezamestnanosti v USA bola {nezamestnanosť [dĺžka_série]}, v mesiaci začínajúcom {month_starting [series_length]}. To je rozdiel medzi {nezamestnanosťou [dĺžka_série] - nezamestnanosťou [dĺžka_série - 1]} oproti predchádzajúcej mesiac. V prílohe je graf údajov od januára 2000. “)

správa2%

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

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

predmet ("Moja textová správa s priloženým grafom")%>%

text_body (msg_text)%>%

attach_part (msg_text)%>%

attach_file ("nezamestnanost_graf.png")

send_message (message2)

Ak chcete, môžete túto funkciu použiť create_draft () vytvorte koncept správy vo svojom účte Gmail, ak si chcete pred odoslaním skontrolovať, ako vyzerá. V tomto prípade, create_draft (message2) by vytvoril koncept mojej správy v prílohe súboru.

Ak chcete vidieť, ako to všetko vyzerá v akcii, pozrite si video v hornej časti tohto článku. A ďalšie tipy R nájdete na stránke videa Urobte viac s R alebo si pozrite zoznam videí Urobte viac s R YouTube.

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