Laravel・PHP入門

PHPer初心者

【Ruby】RubyでGoogle Spreadsheetを読み書きするメモ

【やりたいこと】
GoogleSpreadsheetにターミナルからアクセスをする。
様々な方法で挫折することも多々だったので現時点で上手くいった方法をメモ。

 ※Googleでログインしていて、
 任意のSpreadsheetにアクセスできる状態が前提です。

 

google_driveのgemを使うのが一番良さそう。

gem install google_drive

Githubに情報たくさん載ってました。
OAuth認証だと何かと怒られるのですが
config.jsonでアクセスすれば一発でした。

 

google_driveを呼び出して、config.jsonファイルにアクセスするrubyファイルを作成。

 

require "google_drive"
GoogleDrive::Session.from_config("google_drive_config.json")

実行する

ruby setup.rb

アクセスするURLが表示されるので、
アクセスして authorization codeをコピー・ターミナルで入力。
jsonファイルが作成されました。
一番早かったです。

アクセス方法などは下記記事参照。
config.jsonを呼び出して、キー指定、
もしくはGoogleDriveのフォルダやブック、シート名を指定すれば
一発で指定のワークシートへアクセスできます。

ws = session.spreadsheet_by_key("pz7XtlQC-PYx-jrVMJErTcg").worksheets[0]

 

参考にさせていただきました。
RubyからGoogleSpreadsheetに書く - お手軽編 - Qiita

公式Github
GitHub - gimite/google-drive-ruby: A Ruby library to read/write files/spreadsheets in Google Drive/Docs.

google-drive-ruby/authorization.md at master · gimite/google-drive-ruby · GitHub

公式ドキュメント
File: README — Documentation for google_drive (2.1.5)

 

GoogleSpreadsheetへの読み書きは、worksheetを定義した上で使用可能。
あるシートから別シートへデータを写したいときなどは下記などで実行できます。
以下割と使ったのでまとめ。

p worksheet[1,1] #1行1列目を表示
worksheet[1, 1] = "aaa" # 1行目1列目に書き込み

@item1 = worksheet[2, 1] 
#worksheetの2行目1列目のセルを@item1に代入
worksheet2[2, 2] = @item1 
#worksheet2のセル2行目2列目に@item1を代入
worksheet2.save
#保存

p worksheet.num_rows # レコード数を取得
p worksheet.num_cols # カラム数を取得 

 

以上