如何使用 R 从 Outlook 电子邮件中提取数据

问题描述 投票:0回答:1

我的团队每天收到多个请求,并且这些请求总是带有附件。附件是一份表格,我团队中的某人填写了一部分,然后发送回请求者。我们绩效指标的一部分是了解我们回复这些电子邮件的速度。

我有一个 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]]
  }  
  }
r microsoft365r
1个回答
0
投票

这个也难倒了我。

我注意到,如果您取出电子邮件(我使用的是收件箱而不是特定文件夹):

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)
)

现在我有了一个电子邮件列表,我可以根据自己的选择进行过滤和使用。

© www.soinside.com 2019 - 2024. All rights reserved.