我的团队每天收到多个请求,并且这些请求总是带有附件。附件是一份表格,我团队中的某人填写了一部分,然后发送回请求者。我们绩效指标的一部分是了解我们回复这些电子邮件的速度。
我有一个 Outlook 文件夹,其中包含请求(原始电子邮件)和对请求的响应。我一直在使用 Microsoft365R 包,但我正在努力弄清楚如何批量提取我需要的信息。
这是我迄今为止尝试过的代码
library(Microsoft365R)
# Authenticate with Microsoft 365 (You may need to follow the interactive login process)
get_business_onedrive() # This will prompt you to authenticate
outlook <- get_business_outlook()
# Specify the folder name (replace 'YourFolderName' with the actual folder name)
folder_name <- "PRA Checklists"
folder <- outlook$get_folder(folder_name)
# Get emails from the folder
emails <- folder$list_emails(n = 100000)
# Check the structure of the emails object
str(emails)
ls(emails[[1]])
lapply(emails, ls)
对象电子邮件是一个环境列表..每个环境都有一个名为属性的列表,其中包含我正在寻找的数据,我只是不知道如何将其全部放入每封电子邮件的数据框中。我希望从属性列表中获取的数据元素是 c("receivedDateTime", "sentDateTime", "hasAttachments", "subject", "bodyPreview", "conversationId")。
我已经能够连接到我的 Outlook 并获取环境对象列表。我无法以任何有效的方式提取数据..我尝试了 for 循环但惨败了
for (i in 1:length(emails)) {
for (j in 1:length(emails[[i]]$properties)){
list[[i]] <- emails[[i]]$properties[[j]]
}
}
这个也难倒了我。
我注意到,如果您取出电子邮件(我使用的是收件箱而不是特定文件夹):
library(Microsoft365R)
outl <- get_business_outlook()
emails <- outl$get_inbox()$list_emails(n = 20)
然后您可以查询第一封电子邮件的属性...在 RStudio 中,在最后一个美元符号之后,您可以按“tab”键,“属性”的子项将显示 - 例如,id、receivedDateTime、主题等。
emails[[1]]$properties$
但是您想获取所有电子邮件的属性。如果我们使用 tidyverse,我们可以为每个列表项提取这些属性,如下所示:
library(tidyverse)
email_df <- tibble(
id = map_chr(emails , ~.$properties$id),
receivedDateTime = map_chr(emails , ~.$properties$receivedDateTime),
emailAddress = map_chr(emails , ~ .x$properties$sender$emailAddress$address),
subject = map_chr(emails , ~ .x$properties$subject)
)
现在我有了一个电子邮件列表,我可以根据自己的选择进行过滤和使用。