Closed hslinhares closed 10 months ago
Foi criada a função de busca recursiva em listas para se encontrar o attachmentId
por nome, que não altera, independentemente de sua posição na lista, que pode mudar.
extract_data_by_name <- function(list, name) {
result <- list()
if (length(ids_hist == 1)){
recursive_extract <- function(x) {
if (is.list(x)) {
if (name %in% names(x)) {
result <<- c(result, list(x[[name]]))
} else {
lapply(x, recursive_extract)
}
}
}
recursive_extract(list)
return(result[[1]])
}
}
o arquivo utils.R
traz a função utilizada durante o make extract
que altera o nome do arquivo:
write_attachment <- function(message_id) {
message <- gmailr::gm_message(message_id)
attachments <- gmailr::gm_attachments(message)
filename <- stringr::str_remove(attachments[["filename"]], "-\\d{4}-\\d{2}-\\d{2}-\\d{2}-\\d{2}-\\d{2}")
attachment_id <- attachments[["id"]]
result <- gmailr::gm_attachment(attachment_id, message_id)
gmailr::gm_save_attachment(result, paste0("data-raw/", filename))
}
As bases são geradas com a data em que foi gerada no nome. A função
gm_save_attachments
somente salva com o nome original. Para se renomearmos o nome do anexo ao salvar é preciso utilizar a funçãogm_save_attachment
.Um dos seus parâmentros é o
attachmentId
que não pode ser obtido diretamente. É preciso criar uma função para retirar essa informação de uma lista recursiva gerada pela funçãogm_message()
.