r-Strange InterfaceSupportsErrorInfo错误-checkErrorInfo-214735



我目前正在构建一个代码,用于在电子邮件中搜索特定主题,然后在电子邮件正文中搜索某些特定术语,然后从中提取逗号分隔的数据。然而,我现在遇到了一个我从未见过的问题,这个问题最近才开始出现。

每当代码到达:

inbox <- outlookNameSpace$Folders(6)$Folders("Inbox")

我得到以下错误:

<checkErrorInfo> 80020009 
No support for InterfaceSupportsErrorInfo
checkErrorInfo -2147352567
Error: Exception occurred.

现在,我看到人们在这个地方遇到了类似的错误,但他们似乎是在处理发送电子邮件,而不是搜索特定的电子邮件。

我想知道有没有人对如何解决这个问题有什么建议?

完整代码:

library(RDCOMClient)
Fruit_1 <- "Apples"
Fruit_2 <- "Pears"
##Create vector to store searchables
searchf <- c(Fruit_1, Fruit_2)
## create object for outlook
OutApp <- COMCreate("Outlook.Application")
outlookNameSpace = OutApp$GetNameSpace("MAPI")
search <- OutApp$AdvancedSearch("Inbox", "urn:schemas:httpmail:subject = 'FRUIT QUANTITIES'")
inbox <- outlookNameSpace$Folders(6)$Folders("Inbox")
vec <- c()
get_vals <- function(report,searches) {
data <- read.table(text=report,sep=",")
colnames(data) <- c('key','value')

date <- data[grepl("date",data$key,ignore.case=T),"value"]

lst <- split(data$value,data$key)

c(list(date=date),lst[searches])
}
for (x in emails)
{
subject <- emails(i)$Subject(1)
if (grepl(search, subject)[1])
{
text <- emails(i)$Body()
print(text)
break
}
}

发现失败的原因是R运行了太多的代码行。因此,在"搜索"变量之后添加系统睡眠(5(解决了问题。

所以我的代码看起来像:

search <- OutApp$AdvancedSearch("Inbox", "urn:schemas:httpmail:subject = 'FRUIT QUANTITIES'")
Sys.sleep(5)

为什么要硬编码邮箱索引(6(?如果您需要默认收件箱,请使用Namespace.GetDefaultFolder(olFolderInbox)。如果您需要特定的邮箱,请使用其名称而不是索引。

尝试替换以下代码行的顺序:

inbox <- outlookNameSpace$Folders(6)$Folders("Inbox")
search <- OutApp$AdvancedSearch("Inbox", "urn:schemas:httpmail:subject = 'FRUIT QUANTITIES'")

Application类的AdvancedSearch方法基于辅助线程上指定的DAV搜索和定位(DASL(搜索字符串执行搜索。因此,您应该意识到,以编程方式创建大量搜索文件夹可能会导致大量的同时搜索活动,这将影响Outlook的性能,尤其是当Outlook在联机Exchange模式下进行搜索时。

在代码中,我没有找到如何处理搜索结果,但您可能对处理Application.AdvancedSearchComplete事件感兴趣,该事件在AdvancedSearch方法完成时激发。

但是,如果您需要在单个文件夹中搜索项目(如代码中(,则可以使用同步方法,如Find/FindNextRestrict方法。你可以在以下文章中阅读更多关于它们的信息:

  • 如何:使用Find和FindNext方法从文件夹中检索Outlook邮件项目(C#、VB.NET(
  • 如何:使用Restrict方法从文件夹中检索Outlook邮件项目

最新更新