library(RDCOMClient)
## create Outlook object
OutApp <- COMCreate("Outlook.Application")
「AUX」という名前のOutlookフォルダから今日のメールを取得したいと思います。メールのタイトルを解析し、特定の条件を満たす場合は、メールの内容を解析して特定の文字列を探します。
Rからメールを書いて送信することができましたが、今のところメールを取得できません。
試行錯誤しながら作業を始めたサンプルコードを次に示します。
library(RDCOMClient)
folderName = "AUX"
## create Outlook object
OutApp <- COMCreate("Outlook.Application")
outlookNameSpace = OutApp$GetNameSpace("MAPI")
folder <- outlookNameSpace$Folders(1)$Folders(folderName)
# Check that we got the right folder
folder$Name(1)
emails <- folder$Items
# Can't figure out how to get number of items, so just doing first 10
for (i in 1:10)
{
subject <- emails(i)$Subject(1)
# Replace "#78" with the text you are looking for in Email Subject line
if (grepl("#78", subject)[1]){
print(emails(i)$Body())
break
}
}
申し訳ありませんが、これらのCOMオブジェクトの一部がパラメーターを必要とする理由(Subject(1)など)はわかりませんが、他のオブジェクトは必要ありません(Body()など)。これはOutlook2013で機能しましたが、2007年以降のすべてのバージョンのOutlookでも機能するはずです。
Outlookオブジェクトモデルの詳細については、 KenSlovakのOutlook2007ブック (Outlookの今後のバージョンに関連する)を取得するか、個人のWebサイト http ://www.gregthatcher.com (「スクリプト」セクションを確認してください-私は長年これらをコンパイルしています。)
folderName = "foldername"
## create Outlook object
OutApp <- COMCreate("Outlook.Application")
outlookNameSpace = OutApp$GetNameSpace("MAPI")
fld <- outlookNameSpace$GetDefaultFolder(6)
# Check that we got the right folder
fld = fld$folders(folderName)
Cnt = fld$Items()$Count()
emails <- fld$items
df = data.frame(sno = 1:Cnt,Text = "",stringsAsFactors=FALSE)
for(i in seq(Cnt)){
d = as.data.frame(emails(i)$Body(), stringsAsFactors=FALSE)
df$Text[i] = d[1]
df$Sender[i] = emails(i)[['SenderName']]
df$To[i] = emails(i)[['To']]
df$sub[i] = emails(i)[['subject']]
}