0

我在 StackOverflow 上遇到了或多或少类似的问题。最接近我的问题的答案是从 Outlook 下载附件到 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 = '')

4

1 回答 1

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)
}
于 2019-09-15T11:53:51.533 回答