Начало работы

#install.packages('googlesheets4')
#install.packages("rlang")
library(googlesheets4)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# авторизация
gs4_auth(email = "191becon@gmail.com")

Создание гугл таблицы

# данные для теста
my_iris   <- iris
my_mtcars <- mtcars

# создаём докс
ss1 <- gs4_create("demo_dox", 
                    sheets = list(iris   = head(my_iris), 
                                  mtcars = my_mtcars))
## Creating new Sheet: "demo_dox"
# открыть созданный Google Dox
gs4_browse(ss1)

Чтение гугл таблицы

# чтение листа из гугл таблиц
ss2 <- as_sheets_id("1cdtvY1v3koIWYGYMpr2nPHOW_suoOwgQsPRBgOSDbtc")

data <- read_sheet(ss2, sheet = "iris_new")
## Reading from "demo_dox"
## Range "'iris_new'"

Основные функции

# создать новый лист
sheet_add(ss1,  sheet = "mtcars_new", .after = "mtcars")
## Adding sheet(s) in "demo_dox"
## New sheet(s): "mtcars_new"
# запись данных на новый лист
sheet_write(data = my_iris,
             ss = ss1, 
             sheet = "iris_new")
## Writing to "demo_dox"
## Writing to sheet "iris_new"
# дописать значиения
sheet_append(data  = tail(my_iris, 20),
              ss    = ss1, 
              sheet = "iris")
## Writing to "demo_dox"
## Appending 20 row(s) to "iris"
# получить список листов google таблицы
sheet_names(ss1)
## [1] "iris"       "mtcars"     "mtcars_new" "iris_new"
#Переименовать лист

#По названию
sheet_rename(ss1, "iris", "Ирис")
## Renaming sheet "iris" to "Ирис"
#По номеру
sheet_rename(ss1, 2, "Машинки")
## Renaming sheet "mtcars" to "Машинки"

Использование формул в гугл таблицах

#Задаем столбец (таблицу) из чисел
  dat <- data.frame(x = c(1, 5, 3, 2, 4, 6))

#Создаем гугл таблицу, в которую записываем столбец
  ss3 <- gs4_create("gs4-formula-demo", sheets = dat)
## Creating new Sheet: "gs4-formula-demo"
  ss3
## Spreadsheet name: gs4-formula-demo
##               ID: 1uG3tCQN8Huo9_zlf93Q8plcssR8DdJPEExmewjV-rPQ
##           Locale: ru_RU
##        Time zone: Etc/GMT
##      # of sheets: 1
## 
## (Sheet name): (Nominal extent in rows x columns)
##          dat: 7 x 1
#Создаем таблицу, в которой в левом столбце - название (desc), в правом - формула
  summaries <- tibble::tribble(
    ~desc, ~formulas,
    #Можно писать функции, которые есть в гугл таблицах и в R
    "Максимум", "=max(A:A)",
    "Сумма", "=sum(A:A)",
    "Минимум", "=min(A:A)",
    #Можно писать логические функции
    "A2 > A3?", "=A2>A3", 
    "A2*A3 - A4", "=A2*A3 - A4", 
    #Можно писать функции, которые есть только в гугл таблицах
    "Срзнач", "=СРЗНАЧ(A:A)", 
    #Но нельзя те, которые есть только в R
    "Модуль", "=A3%%A4"
  )

#Переводим стобец формул в формат gs4_formula
  summaries$formulas <- gs4_formula(summaries$formulas)
  summaries
## # A tibble: 7 x 2
##   desc       formulas    
##   <chr>      <fmla>      
## 1 Максимум   =max(A:A)   
## 2 Сумма      =sum(A:A)   
## 3 Минимум    =min(A:A)   
## 4 A2 > A3?   =A2>A3      
## 5 A2*A3 - A4 =A2*A3 - A4 
## 6 Срзнач     =СРЗНАЧ(A:A)
## 7 Модуль     =A3%%A4
#Записываем таблицу summaries в ячейку B1
  range_write(ss3, data = summaries, range = "B1", reformat = FALSE)
## Editing "gs4-formula-demo"
## Writing to sheet "dat"
## Changing dims: (7 x 1) --> (8 x 3)
#Смотрим результаты
gs4_browse(ss3)

Использование формул в R и перенос в гугл таблицы

data = data %>% mutate(new = Sepal.Length > 5)
ss4 <- gs4_create("demo_dox", 
                    sheets = data)
## Creating new Sheet: "demo_dox"
gs4_browse(ss4)

Примеры таблиц для упражнений

gs4_examples()
##                                       mini-gap 
## "1k94ZVVl6sdj0AXfK9MQOuQ4rOhd1PULqpAu2_kr9MAU" 
##                                      gapminder 
## "1U6Cf_qEOhiR9AZqTqS3mbMF3zt2db48ZP5v3rkrAEJY" 
##                                         deaths 
## "1VTJjWoP1nshbyxmL9JqXgdVsimaYty21LGxxs018H2Y" 
##                                  chicken-sheet 
## "1ct9t1Efv8pAGN9YO5gC2QfRq2wT4XjNoTMXpVeUghJU" 
##                           formulas-and-formats 
## "1wPLrWOxxEjp3T1nv2YBxn63FX70Mz5W5Tm4tGc-lRms" 
##                      cell-contents-and-formats 
## "1peJXEeAp5Qt3ENoTvkhvenQ36N3kLyq6sq9Dh2ufQ6E" 
## attr(,"class")
## [1] "drive_id"
ss5<- as_sheets_id(gs4_example("formulas-and-formats"))
gs4_browse(ss5)