RDCOMClient:从多个Outlook电子邮件下载zip附件

时间:2019-09-15 09:30:03

标签: r outlook outlook-vba rdcomclient

我在StackOverflow上经历了或多或少类似的问题。 最能回答我问题的是这个Downloading attachment from Outlook into R

在Outlook中,我有一个名为“ 47MY Daily Report”的自定义文件夹,其中包含具有相同电子邮件标题的每日报告,并且每个报告都有一个zip附件。

该文件夹中每天可能有数百封电子邮件,每个电子邮件都有一个zip附件。

我想做的是 1.下载所有这些zip附件。 2.解压缩 3.根据收到的日期时间重命名每个zip附件中包含的excel文件(daily_report_20190913-1530.xls) 4.将这些excel文件保存在一个文件夹中。

我仍然在第一步中挣扎,我需要从每封电子邮件中下载所有这些zip文件。

下面是我目前拥有的

library(RDCOMOutlook)

# search emails and store as tibble
df_47MY <- RDCOMOutlook::search_emails(folder = 'Inbox', search_term = '47MY Daily Report')
# prepare filename for each attachment
df_47MY$filename <- paste(gsub(':','',gsub('-','',gsub(' ','_',gsub("GMT", "", df_47MY$received)))), '.xls',sep = '')

1 个答案:

答案 0 :(得分:0)

我设法使用RDCOMOutlook软件包找到了解决方案。 它在RDMCOMClient之上提供了更高级别的功能。

library(RDCOMOutlook)

# look for all the emails with this title
df_47JB_KPI <- RDCOMOutlook::search_emails(folder = 'Inbox', search_term = '47JB Migration KPI Report')

# prepare filename for each attachment
df_47JB_KPI$filename <- paste(gsub(':','',gsub('-','',gsub(' ','_',gsub("GMT", "", df_47JB_KPI$received)))), '.xls',sep = '')

# function that download, unzip, and rename the attachment
download_unzip_rename <- function(x, y) {
  file.rename(unzip(RDCOMOutlook::save_attachments(x,target_dir = getwd())),y)
}


dfs <- df_47JB_KPI[1:nrow(df_47JB_KPI),]
# run function to download all attachments, rename them
for (i in seq_along(dfs$email)) {
  print(i)
  email <- dfs$email[[i]]
  filename <- dfs$filename[i]
  download_unzip_rename(email, filename)
}