googlesheets4 para manipulação de dados da Sheets do Google Drive
Esse post foi desenvolvido para ajudar no entendimento do pacote googlesheets4, fazendo com que você possa manipular mais facilmente seus dados que estão armazenados no Google Drive através do R.
Instalação do Pacote googlesheets4
Existem duas maneiras para fazer a instalação do pacote.
A primeira é pelo próprio CRAN do R:
# install.packages("googlesheets4")
A segunda é através do devtools:
# install.packages("devtools")
devtools::install_github("tidyverse/googlesheets4")
library(googlesheets4)
library(googledrive)
Autorizando o googlesheets4 a manipular suas Google Sheets
Em seguida será necessário fazer a autorização, para que seja possivel editar arquivos do Google Drive no R, isso será feito a partir da função:
gs4_auth()
Assim que executado, ele vai te redirecionar para o seu navegador padrão para ser selecionada a conta de email em que será liberado o acesso:
Feito isso, o seu R e o Google Drive já estaram vinculados, fazendo com que possamos manipular arquivos do Google Sheets através do R.
Criando Uma Google Sheet no R e Exportando pelo googlesheets4
Primeiro precisamos de alguns dados para popular nossos Data Frames:
naturais <- c(1,2,3,4,5,6,7,8,9,10)
nomes <- c("Davi", "Alex", "Renan", "Patricia", "Maria", "Gilherme", "Rosa", "Julia", "Robson", "Jose")
racionais <- c(1, 2.2, 3.4, 4.6, 5.8, 6, 7.2, 8.4, 9.6, 10.8)
df <- data.frame(naturais, nomes, racionais)
data_iris_mtcars <- list(iris, mtcars)
Esses serão os primeiros dados que utilizaremos, um data frame com 3 colunas e 10 linhas e uma lista com 2 data frames dentro da mesma.
A função utilizada para criar uma google sheet no R é a gs4_create, nela temos como parâmetros:
name: é utilizado para determinar o nome da Google Sheet;
sheets: é utilizado para determinar quais dados vão popular sua tabela. Vale ressaltar que se não for determinada as sheets da função, por padrão a função irá criar a Google Sheet com uma Sheet chamada Página1 e sem nada dentro, segue abaixo os exemplos:
gs1 <- gs4_create("google-sheets-data-frame", sheets = df) # Criando uma Google Sheet com dados criados
gs2 <- gs4_create("google-sheets-iris-mtcars", sheets = data_iris_mtcars) # Criando uma Google Sheet com 2 conjuntos de dados, que ficarão em Sheets diferentes
gs3 <- gs4_create("google-sheets-nula") # Criando uma Google Sheet vazia
Na saída acima temos informações importantes sobre as nossas tabelas criadas, como a ID que utilizaremos para acessar cada tabela, o número de tabelas nela inserida, o nome e o tamanho das tabelas. Após a criação da tabela, rodando a variável em que ela foi inserida você terá um resultado similar ao demonstrado na imagem acima.
Importando GoogleSheets pelo googlesheets4
Iremos agora importar as tabelas criadas acima utilizando a função read_sheet, na qual conta com os seguintes parâmetros:
ss: em que nele colocamos o ID da Google Sheet que queremos acessar;
sheet: que usamos para selecionar qual tabela queremos acessar dentro do arquivo. Segue abaixo os exemplos:
ID_df <- read_sheet("1iH1PQ6QA0fNgrZC2SW8Kk-BHhce9WlcU4AMfdGYQwjU", sheet = "df") # Importando gs1 através do ID
ID_iris <- read_sheet("1jharBY23L8UYNBCIEIzt0y1ji4OlZm1Q0NaF9xs3Q1s", sheet = "Página1") # Importando gs2 através do ID e acessando a primeira página
ID_mtcars <- read_sheet("1jharBY23L8UYNBCIEIzt0y1ji4OlZm1Q0NaF9xs3Q1s", sheet = "Página2") # Importando gs2 através do ID e acessando a segunda página
ID_vazia <- read_sheet("19_9yJ1s7g9KBdAv1DJ9wwJ2JSatj-xBqWGnLla88LDg", sheet = 1) # Importando gs3 através do ID
Editando nomes de sheets
A função utilizada para renomear uma Sheet da sua tabela é o sheet_rename, em que temos como principais parâmetros:
ss: em que nele colocamos o ID da Google Sheet que queremos acessar;
sheet: usamos para selecionar qual tabela queremos renomear dentro do arquivo;
new_name: será utilizado para adicionar o novo nome à Sheet.
ID_iris_renamed <- sheet_rename("1jharBY23L8UYNBCIEIzt0y1ji4OlZm1Q0NaF9xs3Q1s", sheet = "Página1", new_name = "iris")
# Renomeando a sheet Página1 para iris
Adicionando dados às tabelas
No chunk abaixo estamos criando algumas variáveis com dados, para que possam ser consumidos pelas nossas tabelas que utilizaremos de exemplo a seguir:
#install.packages(tibble) é um data frame com melhorias e mais simples de utilizar
library(tibble)
df2 <- data.frame(11, "Joao", 11)
dfiris3 <- data.frame(iris3)
df3 <- tibble(A = 1:5, B = head(letters,5))
df4 <- tibble(A = naturais, B = racionais)
A função utilizada para acrescentar dados na tabela é sheet_append, temos como principais parâmetros da função:
ss: utilizado para adicionar o ID da Google Sheet que deve ser editada;
data: são os dados que precisamos para acrescentar no data frame;
sheet: usamos para selecionar qual tabela queremos editar dentro do arquivo.
sheet_append(gs1, df2) # Adicionando uma linha ao gs1
sheet_append(gs3, dfiris3) # Adicionando um data frame inteiro em um GoogleSheet
Nesse segundo exemplo temos a função range_write que é utilizada para adicionar novos dados em uma determinada dimensão da tabela, temos como principais parâmetros da função:
ss: utilizado para adicionar o ID da Google Sheet que deve ser editada;
data: são os dados que precisamos para acrescentar no data frame;
sheet: usamos para selecionar qual tabela queremos editar dentro do arquivo;
range: utilizado para determinar a partir de que células seus dados devem popular a tabela, sendo que as colunas são representadas por letras maiúsculas e as linhas por números.
gs5 <- gs4_create("google-sheets-to-edit") # Criando uma Google Sheet vazia para demosntrar os exemplos
range_write(gs5, df3) # Adicionando dados sem especificar linhas e colunas desejadas
range_write(gs5, df4, range = "D10") # Adicionando dados especificando linhas e colunas
Limpando uma área de uma GoogleSheet
Nessa chunk criamos o df5 para que possamos popular a nossa tabela google-sheets-to-delete com os dados que foram adicionados nessa variável para demonstrar a utilização da função que será apresentada abaixo:
df5 <- gs4_fodder(n = 20, m = 20) # Criei um Data Frame com a função gs4_fodder, que lhe entrega uma tabela com n linhas e m colunas
gs6 <- gs4_create("google-sheets-to-delete", sheets = df5)
A função utilizada para deletar dados das GoogleSheets é range_delete, temos como seus principais parâmetros:
ss: utilizado para adicionar o ID da Google Sheet que deve ser editada;
sheet: que usamos para selecionar qual tabela queremos editar dentro do arquivo;
range: utilizado para determinar quias células seus dados devem ser excluidos da tabela, tendo que as colunas são representadas por letras maiúsculas e as linhas por números.
range_delete(gs6, range = "2") # Deletando a segunda linha da tabela
range_delete(gs6, range = "D") # Deletando a coluna D da tabela
Deletando uma tabela
Para deletar uma tabela temos que utilizar um pacote que vem instalado junto ao googlesheets4 chamado googledrive, nele utilizaremos a função drive_trash para mover o arquivo selecionado para a lixeira do Google Drive, em conjunto ao drive_trash, utilizaremos a função gs4_find para achar pelo nome o arquivo que desejamos, como demonstrado abaixo.
library(googledrive)
drive_trash(gs4_find("google-sheets-to-delete")) # Deletando uma GoogleSheet
Referências:
https://googlesheets4.tidyverse.org/index.html (site do pacote)
https://cran.r-project.org/web/packages/googlesheets4/googlesheets4.pdf (documentação do pacote)
https://github.com/tidyverse/googlesheets4 (repositório no GitHub do pacote)