RDCOMClient: загрузка zip-вложения из нескольких писем Outlook

Я задавал более или менее похожие вопросы здесь, в StackOverflow. Ближайший ответ на мой вопрос - это Загрузка вложения из Outlook в R

В Outlook у меня есть настраиваемая папка с названием «Ежедневный отчет 47MY», которая содержит ежедневные отчеты с одинаковым заголовком электронной почты, и каждый из них будет иметь вложение в виде zip-архива.

В этой папке, вероятно, более сотни ежедневных электронных писем, и у каждой есть вложение в виде zip-архива.

Что я хочу сделать, так это 1. Загрузить все эти вложения в виде zip-архива. 2. Разархивируйте их. 3. Переименуйте файл Excel, который содержится в каждом вложении zip, на основе полученной даты и времени (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 = '')


person Afiq Johari    schedule 15.09.2019    source источник


Ответы (1)


Мне удалось найти решение с помощью пакета 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)
}
person Afiq Johari    schedule 15.09.2019