我正在尝试从我的 gmail 帐户中提取所有电子邮件以进行一些分析。最终目标是电子邮件数据框。我正在使用 gmailR 包。
到目前为止,我已经提取了所有电子邮件线程并通过将所有线程 ID 映射到 gm_thread() 来“扩展”它们。这是代码:
threads <- gm_threads(num_results = 5)
thread_ids <- gm_id(threads)
#extract all the thread ids
threads_expanded <- map(thread_ids, gm_thread)
这将返回所有线程的列表。它的结构是 gmail_thread 对象的列表。当您在线程对象列表中向下钻取一层时str(threads_expanded[[1]], max.level = 1)
,您会得到一个如下所示的单个线程对象:
List of 3
$ id : chr "xxxx"
$ historyId: chr "yyyy"
$ messages :List of 3
- attr(*, "class")= chr "gmail_thread"
然后,如果您进一步深入了解组成线程的消息,您就会开始获得有用的信息。str(threads_expanded[[1]]$messages, max.level = 1)
为您获取该线程的 gmail_message 对象列表:
List of 3
$ :List of 8
..- attr(*, "class")= chr "gmail_message"
$ :List of 8
..- attr(*, "class")= chr "gmail_message"
$ :List of 8
..- attr(*, "class")= chr "gmail_message"
我卡住的地方实际上是从所有线程中的每封电子邮件中提取所有有用的信息。最终目标是一个数据框,其中包含 message_id、thread_id、to、from 等列。我在想象这样的事情:
message_id | thread_id | to | from | ... |
-------------------------------------------------------------------------
1234 | abcd | me@gmail.com | pam@gmail.com | ... |
1235 | abcd | pam@gmail.com | me@gmail.com | ... |
1236 | abcf | me@gmail.com | tim@gmail.com | ... |