Rで解析:Googleスプレッドシートの操作が簡単!!「googlesheets4」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

Googleスプレッドシートの新規作成、削除、シート名の変更や移動の操作が簡単なパッケージの紹介です。また、スプレッドシートが共有されていればスプレッドシートIDやURLで内容を取得することも可能です。

パッケージバージョンは1.1.1。実行コマンドはwindows 11のR version 4.4.1で確認しています。

スポンサーリンク

パッケージのインストール

下記、コマンドを実行してください。

# パッケージのインストール
install.packages("googlesheets4")

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。

# パッケージの読み込み
library("googlesheets4")

### データ例の作成#####
# tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}

set.seed(1234)
n <- 30
TestData <- tibble(Group = sample(paste0("Group_",
                                         formatC(1:4, width = 2, flag = "0")),
                                  n, replace = TRUE),
                   A_Data = sample(c(1:50), n, replace = TRUE),
                   B_Data = sample(c(51:100), n, replace = TRUE),
                   C_Data = sample(c(51:100), n, replace = TRUE)) %>%
  rowid_to_column("ID")
########


# Googleアカウントに接続:gs4_authコマンド
# 既に接続済みであればアカウント選択のメッセージが表示されます
# 実行コマンド例は初回接続時の表示です
gs4_auth()

# Is it OK to cache OAuth access credentials in the folder
# C:/Users/chalu/AppData/Local/gargle/gargle/Cache between R sessions?
# 1: Yes
# 2: No
# Selection: 1
# Waiting for authentication in browser...
# Press Esc/Ctrl + C to abort
# Authentication complete.


#Googleアカウントの連携解除:gs4_deauthコマンド
gs4_deauth()


### 以下のコマンドは実行でGoogle driveのスプレッドシートが更新されます #####
# 新規Googleスプレッドシートを作成:gs4_createコマンド
# 作成したオブジェクトは各コマンドのssオプションに値として使用します
# スプレッドシート名:nameオプション
# シート名:sheetsオプション;listでシート名とデータを書き込めます
TestSheet <- gs4_create(name = "からだにいいもの",
                        sheets = list("からだ" = TestData,
                                      "Good" = head(TestData)))

# TestSheetの内容を確認
# TestSheet
# ── <googlesheets4_spreadsheet> ────────────────────────────────────────────────────────────────────
# Spreadsheet name: からだにいいもの                            
# ID: 1rUW-cf4j3yXoJvErMmpS2kZDkfN6Hk7NUVCIWM124oY
# Locale: ja_JP                                       
# Time zone: Asia/Tokyo                                  
# # of sheets: 2                                           
# 
# ── <sheets> ───────────────────────────────────────────────────────────────────────────────────────
# (Sheet name): (Nominal extent in rows x columns)
# からだ: 31 x 5
# Good: 7 x 5


# スプレッドシートにシートを追加:sheet_addコマンド
# 追加位置:.after/.beforeオプション;数値/シート名で指定が可能
TestSheet %>%
  sheet_add(sheet = "いいもの", .after = "からだ")
# 同じ
# sheet_add(ss = TestSheet, shrrt = "いいもの", .after = "からだ")


# スプレッドシートのシートをコピー:sheet_copyコマンド
# コピー対象のシート:from_sheetオプション
# コピー後のシート名:to_sheetオプション
TestSheet %>%
  sheet_copy(from_sheet = "Good", to_sheet = "Good_2",
             .after = "からだ") %>%
  sheet_copy(from_sheet = "Good", to_sheet = "Good_3",
             .after = "からだ")
# 同じ
# sheet_copy(ss = TestSheet, from_sheet = "Good",
#            to_sheet = "Good_2", .after = "からだ")


# シートの削除:sheet_deleteコマンド
# list形式で複数指定が可能
TestSheet %>%
  sheet_delete(sheet = "Good_3")
# 同じ
# sheet_delete(ss = TestSheet, sheet = "Good_3")


# シートの位置を移動:sheet_relocateコマンド
TestSheet %>%
  sheet_relocate(sheet = "Good_2", .after = "Good")
# 同じ
# sheet_relocate(ss = TestSheet, sheet = "Good_2", .after = "Good")


# シート名を変更:sheet_renameコマンド
TestSheet %>%
  sheet_rename(sheet = "Good_2", new_name = "KARADA")
# 同じ
# sheet_rename(ss = TestSheet, sheet = "Good_2", new_name = "KARADA")


# シートにデータを書き込み:sheet_writeコマンド
TestSheet %>%
  sheet_write(data = TestData, sheet = "KARADA")
# 同じ
# sheet_write(ss = TestSheet, data = TestData, ss = TestSheet, sheet = "KARADA")


# シートに列/行の幅/高さを自動調整:range_autofitコマンド
# 対象範囲を指定:rangeオプション;行"1:2"/列"A:B",名前付き範囲
# 行/列の指定:dimensionオプション;"columns"/"rows"
TestSheet %>%
  range_autofit(sheet = "KARADA", range = "A", dimension = "columns")
# 同じ
# range_autofit(ss = TestSheet, sheet = "KARADA", range = "A", dimension = "columns")


# 指定セルの削除:range_deleteコマンド
# 対象範囲を指定:rangeオプション;行"1:2"/列"A:B",名前付き範囲
# セル削除後の移動:shiftオプション;"up"/"left"
TestSheet %>%
  range_delete(sheet = "KARADA", range = "C5:D10", shift = "up")
# 同じ
# range_autofit(ss = TestSheet, sheet = "KARADA",
#               range = "C5:D10", shift = "up")
########


# シートIDで全データを取得する:read_sheetコマンド
# 取得対象のシートは共有されている必要があります
ReadData <- read_sheet(ss = "1rUW-cf4j3yXoJvErMmpS2kZDkfN6Hk7NUVCIWM124oY",
                       sheet = "Good")
#確認
ReadData
# A tibble: 6 × 5
#    ID Group    A_Data B_Data C_Data
#  <dbl> <chr>     <dbl>  <dbl>  <dbl>
#1     1 Group_04      3     67     98
#2     2 Group_04     36     58     51
#3     3 Group_02     31     92     86
#4     4 Group_02     29     82     78
#5     5 Group_01      5     97     69
#6     6 Group_04      2     72     59


# シートIDで範囲を指定してデータを取得する:range_readコマンド
# 取得対象のシートは共有されている必要があります
# 対象範囲を指定:rangeオプション;行"1:2"/列"A:B",名前付き範囲
ReadData <- range_read(ss = "1rUW-cf4j3yXoJvErMmpS2kZDkfN6Hk7NUVCIWM124oY",
                       sheet = "Good", range = "B3:E6")
#確認
ReadData
# A tibble: 3 × 4
#   Group_04  `36`  `58`  `51`
#   <chr>    <dbl> <dbl> <dbl>
# 1 Group_02    31    92    86
# 2 Group_02    29    82    78
# 3 Group_01     5    97    69

# スプレッドシートのプロパティを確認:sheet_propertiesコマンド
TestSheet %>%
  sheet_properties()
# A tibble: 4 × 8
#  name     index         id type  visible grid_rows grid_columns data  
#  <chr>    <int>      <int> <chr> <lgl>       <int>        <int> <list>
#1 からだ       0  782193909 GRID  TRUE           31            5 <NULL>
#2 いいもの     1  768578770 GRID  TRUE         1000           26 <NULL>
#3 Good         2  706663824 GRID  TRUE            7            5 <NULL>
#4 KARADA       3 1135385526 GRID  TRUE           31            5 <NULL>

少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました