【R】googlesheets4
2020年5月12日
1. はじめに
googlesheets4は、そのものずばりRでGooglesheetを使用するためのパッケージです。従来使われてきたgooglesheetsは2020年9月30日で廃版となるようです。googlesheets4はより使いやすくなっているようです。
2. インストール
CRANからインストールできます。
install.packages("googlesheets4")
3. 使ってみる
3.1 パッケージ読込
まずは、パッケージの読込
library(googlesheets4)
3.2 ファイル読込
read_sheetの引数に読み込みたいSheetのURLを入力します。最初の利用ではGoogleから認証が求められます。
ここでは、”gapminder”というSheetを例に説明します。
read_sheet("https://docs.google.com/spreadsheets/d/1U6Cf_qEOhiR9AZqTqS3mbMF3zt2db48ZP5v3rkrAEJY/edit#gid=780868077")
#> Reading from "gapminder"
#> Range "Africa"
#> # A tibble: 624 x 6
#> country continent year lifeExp pop gdpPercap
#> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 Algeria Africa 1952 43.1 9279525 2449.
#> 2 Algeria Africa 1957 45.7 10270856 3014.
#> 3 Algeria Africa 1962 48.3 11000948 2551.
#> 4 Algeria Africa 1967 51.4 12760499 3247.
#> 5 Algeria Africa 1972 54.5 14760787 4183.
#> # … with 619 more rows
シートをIDや名前で操作したい場合がほとんどですが、この時は次のように取得できます。
gap_id <- gs4_example("gapminder")
class(gap_id)
#> [1] "sheets_id" "drive_id"
unclass(gap_id)
#> gapminder
#> "1U6Cf_qEOhiR9AZqTqS3mbMF3zt2db48ZP5v3rkrAEJY"
gap_id
#> Spreadsheet name: gapminder
#> ID: 1U6Cf_qEOhiR9AZqTqS3mbMF3zt2db48ZP5v3rkrAEJY
#> Locale: en_US
#> Time zone: America/Los_Angeles
#> # of sheets: 5
#>
#> (Sheet name): (Nominal extent in rows x columns)
#> Africa: 625 x 6
#> Americas: 301 x 6
#> Asia: 397 x 6
#> Europe: 361 x 6
#> Oceania: 25 x 6
#>
#> (Named range): (A1 range)
#> canada: 'Americas'!A38:F49
次のように、シート名(Asia)とコラム(A:D)を指定して読み込むことも可能です。
gs4_example("gapminder") %>%
read_sheet(range = "Asia!A:D")
#> Reading from "gapminder"
#> Range "'Asia'!A:D"
#> # A tibble: 396 x 4
#> country continent year lifeExp
#> <chr> <chr> <dbl> <dbl>
#> 1 Afghanistan Asia 1952 28.8
#> 2 Afghanistan Asia 1957 30.3
#> 3 Afghanistan Asia 1962 32.0
#> 4 Afghanistan Asia 1967 34.0
#> 5 Afghanistan Asia 1972 36.1
3.2 書き込みと編集
ファイルの生成は、gs4_create
です。ここでは、able-aardvard
というファイル名で、iris
とmtcars
のデータのhead
部をそれぞれflowers
とautos
というシート名で作成して保存しています。
ss <- gs4_create( "able-aardvark", sheets = list(flowers = head(iris), autos = head(mtcars)) ) #> Creating new Sheet: "able-aardvark" ss #> Spreadsheet name: able-aardvark #> ID: 1OV9Mxf-NdTyB1ChmlVKEFy0e1AaPAJCahzcWBw1w3qQ #> Locale: en_US #> Time zone: Etc/GMT #> # of sheets: 2 #> #> (Sheet name): (Nominal extent in rows x columns) #> flowers: 7 x 5 #> autos: 7 x 11 read_sheet(ss) #> Reading from "able-aardvark" #> Range "flowers" #> # A tibble: 6 x 5 #> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> <dbl> <dbl> <dbl> <dbl> <chr> #> 1 5.1 3.5 1.4 0.2 setosa #> 2 4.9 3 1.4 0.2 setosa #> 3 4.7 3.2 1.3 0.2 setosa #> 4 4.6 3.1 1.5 0.2 setosa #> 5 5 3.6 1.4 0.2 setosa #> # … with 1 more row
ファイルを標準のブラウザで開きたいときは、次のようにgs4_broese
を利用します。
gs4_browse(ss)
続いて、次のようにデータを新たなワークシートに挿入してみます。
my_data <- data.frame(
numbers = c(1, 5, 3, 2, 4, 6),
letters = letters[1:6]
)
write_sheet(my_data, ss = ss)
#> Writing to "able-aardvark"
#> Writing to sheet "my_data"
ss
#> Spreadsheet name: able-aardvark
#> ID: 1OV9Mxf-NdTyB1ChmlVKEFy0e1AaPAJCahzcWBw1w3qQ
#> Locale: en_US
#> Time zone: Etc/GMT
#> # of sheets: 3
#>
#> (Sheet name): (Nominal extent in rows x columns)
#> flowers: 7 x 5
#> autos: 7 x 11
#> my_data: 7 x 2
さらにその下にデータを追加してみます。
my_summaries <- data.frame(
x = gs4_formula('=SPARKLINE(A2:A7, {"color", "blue"})'),
y = gs4_formula('=JOIN("-", B2:B7)')
)
ss %>%
sheet_append(my_summaries, sheet = "my_data")
#> Writing to "able-aardvark"
#> Appending 1 row(s) to "my_data"
3.3 ファイル削除
このAPIにはファイルを削除する機能はありません。ファイルを削除するには、次のようにDriveAPIを利用します。
googledrive::drive_trash(ss)
#> Files trashed:
#> * able-aardvark: 1OV9Mxf-NdTyB1ChmlVKEFy0e1AaPAJCahzcWBw1w3qQ
4. さいごに
個人的には、spreadsheetを使う機会はあまりないのですが、このようにプログラミングでsheetを操作できると作業が効率化しそうですね。