毎週日曜日に添付ファイル(zipフォルダー)が記載されたメールが届きます。メールの件名は変更されません。指定された件名の最新のメールを見つけて、添付ファイルをダウンロードしたい。私は新しいRユーザーですが、これまでのところ、件名に基づいてメール本文を印刷する方法しか見つかりませんでした(stackoverflowで尋ねられた他の質問の1つから R RDCOMClientを使用してOutlookの受信トレイのメールを取得する方法は? )。理想的には、指定された日付に受信された指定された件名の電子メールを見つけて、添付ファイルをダウンロードしたいと思います。正しい方向に向けてください。どんな助けでも大歓迎です。ありがとうございました。
AdvancedSearchメソッドを使用して、受信トレイまたはその他のフォルダーを検索できます。
_library(RDCOMClient)
Outlook_app <- COMCreate("Outlook.Application")
search <- Outlook_app$AdvancedSearch(
"Inbox",
"urn:schemas:httpmail:subject = 'Super Important Email'"
)
_
これは非同期メソッドであるため、Rは検索が完了するのを待たずに次のステップに進みます。これを処理するためのAdvancedSearchComplete
イベントは存在しますが、RDCOMClientを使用してこれを行う方法を理解することができませんでした。回避策として、Sys.sleep(5)
は検索を完了するのに十分な時間を与える必要があります。
これらの結果を調べて、ReceivedTime
メソッドを使用して受信時間をクエリできます。これらの時刻を日付に変換するには、1899年12月30日のMicrosoftOffice基準日を使用します。
_results <- search$Results()
results$Item(1)$ReceivedTime() # Received time of first search result
as.Date("1899-12-30") + floor(results$Item(1)$ReceivedTime()) # Received date
_
これで、特定の日付、たとえば2017年8月14日に受信した電子メールの結果を確認できます。
_for (i in 1:results$Count()) {
if (as.Date("1899-12-30") + floor(results$Item(i)$ReceivedTime())
== as.Date("2017-08-14")) {
email <- results$Item(i)
}
}
_
検索結果と同じように、メールの添付ファイルを確認できます。最初の添付ファイルはemail$Attachments(1)
になります(電子メールの署名の写真に注意してください。これらも表示されます!)。特定の添付ファイルに興味がある場合は、FileName
メソッドで見つけることができます。必要な添付ファイルが見つかったら、それをファイルに保存して、他のファイルと同じように使用を開始できます。
_attachment_file <- tempfile()
email$Attachments(1)$SaveAsFile(attachment_file)
data <- read.csv(attachment_file)
_
ここでは一時ファイルパスを使用しましたが、もちろん、添付ファイルを永続的な場所に保存することもできます。