{gmailr} を使ってメール頻度をヒストグラムにする
引き続き {gmailr} でメールデータの分析をしてます。 とりあえず日々のメール頻度をヒストグラムにしました。
問題点は、メールが100通しかこのままだと取得できないこと。 本当は API で100通以上取得できるはずなのですが、うまくいかないのでそこはまたこれからがんばります。
# copy from https://github.com/alkashef/gmailstats/blob/48d1239abcc094142319338149c3dd2ac5e9b11d/gmailstats.R # The MIT License (MIT) # Copyright (c) 2015 Ahmad Al-Kashef # ------------------------------------------------------------------------------ library(gmailr) library(purrr) library(stringr) flatmap.null <- function(.x, .f){ .x %>% map(.f=.f) %>% map_if(is.null, ~(NA)) %>% flatten } # Authenticate Gmail access gmail_auth("gmailkey.json", scope = 'read_only') # Create gmail seach query without chat start_date = Sys.Date()-7 end_date = Sys.Date() gmail_search_query = paste0("in:sent -is:chat after:", start_date, "before:", end_date) # Retrieve message id's using the search query ids = id(messages(search = gmail_search_query)) # Get fields using the id's ids %>% map(message) -> msgs msgs %>% flatmap.null(to) -> tos msgs %>% flatmap.null(cc.gmail_message) -> ccs msgs %>% flatmap.null(subject) -> sbjs msgs %>% map( ~ str_sub( .$internalDate,start=1, end=-4) ) %>% flatmap.null( strtoi ) %>% as.POSIXct( origin='1970-01-01') -> dates mails.df <- data.frame(sbjs,tos,ccs,dates) hist(mails.df$dates, breaks="days")