Отправить электронную почту из Outlook, включив фрейм данных в виде таблицы в R

У меня есть кадр данных, как показано ниже. Затем я конвертирую фрейм данных в таблицу html.

# Use RDCOMClient to send email from outlook
library(RDCOMClient)
# Use xtable to convert dataframe into html table
library(xtable)

# Create dataframe
df <- as.data.frame(mtcars[1:3,1:3])

# Create HTML object
df_html <- xtable(df)

Теперь я отправляю электронное письмо из Outlook, используя замечательное решение, указанное в ветке электронной почты Отправка электронной почты в R через Outlook

## init com api
OutApp <- COMCreate("Outlook.Application")
## create an email 
outMail = OutApp$CreateItem(0)
## configure  email parameter 
outMail[["To"]] = "[email protected]"
outMail[["subject"]] = "some subject"
outMail[["body"]] = df_html
## send it                     
outMail$Send()

Для тела моего электронного письма мне нужен фрейм данных df, который я хочу прикрепить в виде таблицы html. Когда я выполняю приведенный выше код, я получаю сообщение об ошибке ниже.

Error in `[[<-`(`*tmp*`, "body", value = list(mpg = c(21, 21, 22.8), cyl = c(6,  : 
  Can't attach the RDCOMServer package needed to create a generic COM object
In addition: Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :
  there is no package called ‘RDCOMServer’

Когда я меняю строку outMail[["body"]] = df_html на outMail[["body"]] = paste0(df_html), я получаю электронное письмо, но вывод не появляется в виде таблицы. Это происходит, как показано ниже в моем прогнозе.

c(21, 21, 22.8), c(6, 6, 4), c(160, 160, 108)

Я хочу, чтобы это был стол. Как я могу достичь этого? Спасибо!


person Code_Sipra    schedule 27.10.2017    source источник
comment
Уважаемые знатоки, есть предложения, как решить эту проблему в R?   -  person Code_Sipra    schedule 01.11.2017
comment
У меня есть частичное решение этой проблемы, представленное в ссылке - stackoverflow.com/questions/47248728/. Но затем я столкнулся с другой проблемой, для которой я задал новый вопрос, как показано в ссылке выше.   -  person Code_Sipra    schedule 12.11.2017


Ответы (1)


Наконец-то я нашел решение для вставки фрейма данных в виде таблицы HTML в Microsoft Outlook. Это использует пакет xtable. Часть кредита решения принадлежит @lukeA отсюда - Как показать рабочий лист Excel в теле Outlook с помощью R

Ниже приведено решение.

library(RDCOMClient)
library(xtable)

x <- head(mtcars)
y <- print(xtable(x), type="html", print.results=FALSE)

body <- paste0("<html>", y, "</html>")

OutApp <- COMCreate("Outlook.Application")
outMail = OutApp$CreateItem(0)
outMail[["To"]] = "[email protected]"
outMail[["subject"]] = "TEST EMAIL"
outMail[["HTMLbody"]] = body
outMail$Send()

Вот как результат выглядит в Microsoft Outlook.

Скриншот из Microsoft Outlook

person Code_Sipra    schedule 13.11.2017