r - 从电子邮件下载链接并将该文件调用到 R

标签 r string outlook rvest rdcomclient

我每天都会收到一封电子邮件,在该电子邮件中,有一个下载链接。当您单击下载链接时,每次都会下载一个不同文件名的 csv 文件。最重要的是,下载链接名称每天都在变化。

有没有办法调用作为超链接的电子邮件正文中的文本,并将下载的文件读取到 R?

我的电子邮件是这样的:

enter image description here

我从电子邮件中读取任何内容的常用代码如下所示:

##Load Libraries
library(readr)
library(RDCOMClient)
library(plotrix)
outlook_app <- COMCreate("Outlook.Application")
search <- outlook_app$AdvancedSearch(
  "Inbox",
  "urn:schemas:httpmail:subject = 'SUBJECT NAME'"
)

Sys.sleep(5) # Wait a hot sec!


results <- search$Results() # Saves search results into results object

Sys.sleep(5) # Wait a hot sec!

results$Item(1)$ReceivedTime() # Received time of first search result

as.Date("1899-12-30") + floor(results$Item(1)$ReceivedTime()) # Received date

# Iterates through results object to pull out all of the items
for (i in 1:results$Count()) {
  if (as.Date("1899-12-30") + floor(results$Item(i)$ReceivedTime()) 
      == as.Date(Sys.Date())) {
    email <- results$Item(i)
  }
}

attachment_file <- tempfile()
email$Attachments(1)$SaveAsFile(attachment_file)

##Automatically Determine csv file name
file_name<-unzip(attachment_file,list=TRUE)
csv_file<-file_name$Name

##Read CSV File
df <- read_csv(unz(attachment_file,csv_file), skip = 25)

最佳答案

你可以考虑这样的事情:

library(RDCOMClient)
library(stringr)

## create outlook object
OutApp <- COMCreate("Outlook.Application")
outlookNameSpace <- OutApp$GetNameSpace("MAPI")
fld <- outlookNameSpace$GetDefaultFolder(6)

# Check that we got the right folder
Cnt <- fld$Items()$Count()
emails <- fld$items
list_Text_Body <- list()
list_URL_Link <- list()

for(i in 1 : Cnt)
{
  print(i)
  list_Text_Body[[i]] <- emails(i)[["Body"]]
  list_URL_Link[[i]] <- stringr::str_extract_all(list_Text_Body[[i]], pattern = "http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+")[[1]]
}

read.csv(list_URL_Link[[1]][[1]])

关于r - 从电子邮件下载链接并将该文件调用到 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49693062/

相关文章:

r - R中按时间的平均值

python - 弹性查询失败,并显示以下错误异常:TransportError(400,u'search_phase_execution_exception',u'无法解析查询[*/abc *]')

vba - 将约会保存到 Exchange 公共(public)日历文件夹

java - 如何让 Lotus Domino 接受 javamail 附件

带有 Office365 邮件的 PHP IMAP

r - 使用 dplyr 对 R 中的组进行索引

json - 如何从具有 .json 格式的行中提取字符串?

r - 如何将摘要(lm)保存到文件?

php - 如何将字符串插入数据库表中的不同列?

c - strcmp() 在 C 中究竟返回什么?