🎃

【実務で役立つ】Rから直接Googleスプレッドシートに書き出す方法

2024/11/25に公開

まずは準備

最初にgooglesheets4パッケージをインストールします。(本日の主役です)

install.packages("googlesheets4")
library(googlesheets4)

自分のGoogleアカウントと連携させるために、次のスクリプトを記述します。

# GoogleスプレッドシートとRの接続
gs4_deauth()
gs4_auth(email = "ここにメールアドレス")

# 「ダミー」という名前のシートを作成 
ss <- gs4_create("ダミー", sheets = c("alpha", "beta"))  

これで認証画面が出てくるので、許可をするとRから直接スプシに書き出すことができるようになります。

ちなみに上記のgs4_createではsheets = で作成するシートの名前を任意でつけることができます。上記では「ダミー」というスプシの中に「alpha」「beta」というシートが追加されます。

既存のスプシを使用する

元から存在するシートを使いたい場合は以下のようにします。

# 既にあるスプシを読み込む
spreadsheet_url <- "スプシのURL"
ss <- gs4_get(spreadsheet_url)

また、ssで読み込んだスプシの内容を確認したい際には以下のスクリプトを実行するとssで読み込んだスプシが開きます。

# ssで読み込んだスプシを開く
gs4_browse(ss)

実際に書き出してみる

まずは適当にデータを作ります。

# データを作る
dat <- tibble::tibble(string = "string", logical = TRUE, data.time = Sys.time())

そして実際に書き出します。

range_write(ss, data = dat, sheet = "beta", col_names = FALSE)

これでbetaというシートにdatが書き出されます。
col_namesTRUEを指定すると列名も出力され、FALSEを指定すると列名を除いたものが出力されます。

セルを指定して書き出し

中にはセルを指定して書き出したい時もあると思います。
そんな時は、以下のようにセル名を指定します。

range_write(ss, data = dat, range = "beta!C5", col_names = FALSE)

これでbetac5セルをはじめとして書き出されます。

おまけ

特定のセルの数値を読み込む方法

特定のセルの数値を引っ張ってくる方法を紹介しておきます。

# 特定のセルの値を読み込む
cell_value <- read_sheet(sheet_url, range = "beta!B2")

こうすることで、betaシートのB2の値を抽出することができます。

スプシを削除する方法

これを実行することで、demoというスプシは削除されます(ゴミ箱に入ります)。

gs4_find("demo") %>%
  googledrive::drive_trash()

最後に

いかがだったでしょうか。
Rから直接スプシに書き出すことができると仕事の幅もかなり広がると思います。

Discussion