从电子邮件正文中带有图像的附件中提取 Zip+CSV 文件
Extracting Zip+CSV file from attachment w/ Image in Body of Email
我每天都会收到电子邮件,其中有一个附件包含 1 个 zip 文件和 1 个 csv 文件。
在我的电子邮件正文中,有一张图片被识别为另一个附件,我很确定。
当电子邮件正文中只有文本但有 "Adobe Marketing Cloud" 图片时,下面的脚本可以正常工作,它会搞砸脚本。
有没有一种方法我只能读取第一个附件(假设是 zip 文件)?
这是我的脚本:
library(readr)
library(RDCOMClient)
outlook_app <- COMCreate("Outlook.Application")
search <- outlook_app$AdvancedSearch(
"Inbox",
"urn:schemas:httpmail:subject = 'SUBJECTNAME'"
)
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
newly_read_data <- read_csv(unz(attachment_file,csv_file))
错误来了:
file_name<-unzip(attachment_file,list=TRUE)
Error in unzip(attachment_file, list = TRUE) :
zip file 'C:\Temp\Rtmp86Gnzp\file29904a23387b' cannot be opened
任何帮助都会很棒,谢谢!
email$Attachments(1)$SaveAsFile(attachment_file)
将根据一些未知的顺序将 第一个 附件保存到 attachment_file
定义的文件路径中。如果您确定只有一个扩展名为“.zip”的文件,那么您可以使用 FileName
方法检查附件名称是否包含“.zip”:
attachment_file <- tempfile()
for (i in 1:email$Attachments()$Count()) {
attachment <- email$Attachments(i)
if (grepl(".zip", attachment$FileName(), ignore.case = TRUE)) {
attachment$SaveAsFile(attachment_file)
}
}
我每天都会收到电子邮件,其中有一个附件包含 1 个 zip 文件和 1 个 csv 文件。
在我的电子邮件正文中,有一张图片被识别为另一个附件,我很确定。
当电子邮件正文中只有文本但有 "Adobe Marketing Cloud" 图片时,下面的脚本可以正常工作,它会搞砸脚本。
有没有一种方法我只能读取第一个附件(假设是 zip 文件)?
这是我的脚本:
library(readr)
library(RDCOMClient)
outlook_app <- COMCreate("Outlook.Application")
search <- outlook_app$AdvancedSearch(
"Inbox",
"urn:schemas:httpmail:subject = 'SUBJECTNAME'"
)
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
newly_read_data <- read_csv(unz(attachment_file,csv_file))
错误来了:
file_name<-unzip(attachment_file,list=TRUE)
Error in unzip(attachment_file, list = TRUE) :
zip file 'C:\Temp\Rtmp86Gnzp\file29904a23387b' cannot be opened
任何帮助都会很棒,谢谢!
email$Attachments(1)$SaveAsFile(attachment_file)
将根据一些未知的顺序将 第一个 附件保存到 attachment_file
定义的文件路径中。如果您确定只有一个扩展名为“.zip”的文件,那么您可以使用 FileName
方法检查附件名称是否包含“.zip”:
attachment_file <- tempfile()
for (i in 1:email$Attachments()$Count()) {
attachment <- email$Attachments(i)
if (grepl(".zip", attachment$FileName(), ignore.case = TRUE)) {
attachment$SaveAsFile(attachment_file)
}
}