RとGmailからメールを送信する方法

Rライフのある時点で、分析結果をRを使用していない同僚と共有したいと思うでしょう。これを行う方法はたくさんあります。最も簡単な(そして最も安価な)1つは、結果を電子メールで送信することです。

しかし、分析ワークフロー全体を自動化して、最後に手動で作成してメールを送信するのは悲しいことです。幸いなことに、そうする必要はありません。Rスクリプトから直接メールを送信できるRパッケージがいくつかあります。この記事では、そのうちの1つをデモします。ジムヘスターによるgmailrで、現在はRStudioのソフトウェアエンジニアです。

もちろん、Gmailアカウントが必要です。Gmailアカウントをお持ちでない場合は無料で設定できます。次に、Rからそのアカウントを使用する前に、APIアクセス用にアカウントを設定する必要があります。方法は次のとおりです。

console.developers.google.comにアクセスします(はい、それはサブサブドメインです)。開発者プロジェクトをまだお持ちでない場合は、作成するように求められます。 

ダッシュボードの上部に、「APIとサービスを有効にする」という選択肢が表示されます。それをクリックします。

シャロン・マクリス、

次に、GmailAPIを検索します。それをクリックしてから、[有効にする]をクリックします。 

Rスクリプトには資格情報が必要になるため、右上の[資格情報の作成]をクリックします。

シャロン・マクリス

Jim Hesterの指示によると、クライアントIDが必要なので、クライアントIDを選択します。

シャロン・マクリス、

今、それはアプリケーションタイプを求めています。「Rスクリプト」がないので「その他」を選びたいです。ただし、すべてのラジオボタンはグレー表示されています。これは、同意画面を構成していないためです。ラジオボタンの選択に集中している場合、これは見逃しがちです。右上にあります。それをクリックします。

シャロン・マクリス、

あなたのメールアドレスはすでに同意画面のフォームにあるはずです。他の唯一の要件は、アプリケーションの名前です。あなたはそれを好きなように呼ぶことができます。

ジムは、残りのデフォルトは問題ないと言っているので、下にスクロールして保存します。これで、アプリケーションタイプ[その他]を選択し、アプリケーションに名前を付けて、[作成]をクリックできるようになります。

その後、コンソールからクライアントIDとクライアントシークレットが提供されます。必要に応じて、R環境に追加して使用できます。しかし、ジムは代わりにJSONファイルをダウンロードすることを提案しています。これをRプロジェクトの作業ディレクトリにダウンロードして、付けたファイル名を覚えておくことができます。

シャロン・マクリス、

これでGoogle側のセットアップは終了です。いよいよ、Rコードの準備が整いました。 

まず、gmailrパッケージがインストールされていることを確認します。CRANで利用できるので、でインストールできますinstall.packages("gmailr")。次に、を使用してスクリプトにパッケージをロードしますlibrary(gmailr)

他のことをする前に、ダウンロードしたJSON資格情報ファイルを使用するように作業中のRセッションを設定する必要があります。これは、use_secret_file()関数と、引数としてJSONファイルの名前を使用して行うことができます。JSON資格情報ファイルDoMoreWithR.jsonを呼び出すと、コマンドは次のようになります。 

use_secret_file("DoMoreWithR.json")

実際にメッセージを送信するのはかなり簡単です。

一部のサンプルデータについては、米国の毎月の失業率をダウンロードしてから、最新の失業率に関する情報を含むlatest_msgというテキスト文字列を作成しました。以下のコードでは、glueパッケージを使用して、メッセージに必要な文字列をアセンブルしていますが、それはそのようにするのが好きだからです。paste()またはpaste0()同様にうまく機能します。

電子メールメッセージでは、Rで生成された任意のデータを使用できます。私と一緒にフォローしたい場合は、次のコードがあります(pacmanパッケージがインストールされている必要があります)。

pacman :: p_load(quantmod、glue、xts、dplyr、ggplot2)
getSymbols( "UNRATE"、src = "FRED")

失業<-coredata(UNRATE)

month_starting <-index(UNRATE)

series_length <-長さ(失業)

latest_msg <-glue( "{month_starting [series_length]}から始まる月の最新の米国の失業率は{unemployment [series_length]}でした。これは、前の月との{unemployment [series_length] --unemployment [series_length-1]}パーセンテージポイントの違いです。月。")

次に、MIME電子メールオブジェクトを作成してから、宛先アドレス、差出人アドレス、件名テキスト、およびメッセージ本文を追加します。

my_email_message%

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

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

subject( "私のテストメッセージ")%>%

text_body(latest_msg)

これを行ってからmy_email_messageの構造を確認するstr(my_text_message)と、クラスがmime。のリストであることがわかります。

MIMEメッセージオブジェクトを作成したら、send_message()関数を使用して送信できます。引数は、私のMIMEオブジェクトの名前、この場合はmy_email_messageです。したがって、この場合の完全なコマンドは次のとおりです。

send_message(my_email_message)

send_message()を初めて実行するときに、Rセッション間で認証をキャッシュするかどうかを尋ねられる可能性があります。はいと言うことをお勧めします。これを初めて実行すると、ブラウザでRスクリプトがGoogleアカウントを使用することを承認するように求められます。

gmailrでできることは他にもあります。1つのオプションは、HTMLメッセージを作成することです。これにより、太字や斜体などのマークアップを使用できます。

ここで、私のメッセージ本文にはHTMLのような段落記号と太字および斜体が含まれており、それを職場の住所に送信します。 

html_msg_text <-glue( "

最新の米国の失業率は

{unemployment [series_length]}、開始月

{month_starting [series_length]}。それは

{失業[series_length]-失業[series_length-1]}

前月との百分率差。

米国労働統計局からのデータ。

")
my_html_message%

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

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

subject( "私のテストメッセージ")%>%

html_body(html_msg_text)

send_message(my_html_message)

残念ながら、Rから生成された画像をメッセージ本文に直接簡単に含める方法がわかりません。ただし、添付ファイルとして含めるのは非常に簡単です。 

以下のスクリプトの上部で、失業率データを2000以降の指標を含むデータフレームに変換しているので、ggplotを使用してグラフ化し、グラフをファイルに保存できます。 

ただし、コードのこの次の部分は、電子メールで知っておくべき重要なことです。まず、前と同じように、glueパッケージを使用してメッセージテキストのテキスト文字列を作成しています。新しくなったのは、MIMEオブジェクトを作成する最後の2行のコードです。その最後の行はattach_file()、私のPNGファイルを電子メールに添付します。電子メールの本文にテキストを表示する場合は、前の行が重要です。text_body()attach_part()本文の両方使用しない、ファイルを添付するときにテキストが表示されません。覚えておくべきこと。

次に、同じsend_message()関数を使用して送信できます。

un_df%

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

名前の変更(失業= UNRATE)

mygraph <-ggplot(un_df、aes(month_starting、unemployment))+

geom_line()+

ggtitle( "US Monthly Unemployment")+

xlab( "月間開始")+

ylab ("")

ggsave("unemployment_graph.png")
msg_text <- glue("The latest US unemployment rate was {unemployment[series_length]}, in the month starting {month_starting[series_length]}. That's {unemployment[series_length] - unemployment[series_length - 1]} percentage points difference from the prior month. A graph of the data since January 2000 is attached.")

message2 %

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

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

subject("My text message with attached graph") %>%

text_body(msg_text) %>%

attach_part(msg_text) %>%

attach_file("unemployment_graph.png")

send_message(message2)

create_draft() 送信する前にメッセージの外観を確認したい場合は、この機能を使用してGmailアカウントに下書きメッセージを作成できます。この場合、create_draft(message2)添付ファイルメッセージの下書きを作成します。

これらすべての動作を確認したい場合は、この記事の上部にあるビデオをご覧ください。さらにRのヒントについては、のDo More With Rビデオページにアクセスするか、Do More With RYouTubeプレイリストを確認してください。