RubyでGoogleスプレッドシートを読み込み・書き込みする

はじめに
Googleスプレッドシートを自分で作成したRubyコードから読み込んだり、書き込んだりするためのコードについてまとめます。
前提と環境
- Ruby 2.5.1
- gem環境構築済
- Googleアカウント取得済とする
- Google Drive API有効化済
- Google APIs のクライアントIDとクライアントシークレット取得済
やること
RubyからGoogleスプレッドシートにアクセスして指定したシートの指定した範囲のセルを読み込んだり、セルに値を書き込んだりします。google_drive
というgemを使用します。基本的な手順は以下の参考サイトと同じになります。
google-drive-ruby | GitHub
クライアントIDとクライアントシークレットを含む設定ファイル作成
取得済のクライアントID
とクライアントシークレット
を含む設定ファイルを以下のように作成しておきます。ファイル名はconfig.json
とし、これらから作成するRubyのコードと同じディレクトリに保存しておきます。
gemのgoogle-drive-rubyをインストール
google-drive-ruby
というgemをインストールします。手順はこちらの公式サイトgoogle-drive-ruby | GitHubと同様で以下のコマンドをターミナル上で実行するだけです。
基本的なコード
以下が実際のコードになります。ここでは適当に以下をdrivetest.rb
というファイル名で保存します。
上記が基本的なコードとなります。ここで、以下のような構成のスプレッドシートに対して、上記のコードを実行してみます。
- スプレッドシート名:rubysheet
- ワークシート名:シート1
drivetest.rb
を実行
上に示したコードを実行すると、以下のようにスプレッドシートが更新されます。セルA2
の値がfoo
、セルB2
の値がbar
に上書きされていることがわかります。
なお、上記をはじめて実行すると、config.json
にscope
とrefresh_token
が自動で追記されます。上記コードを実行後はconfig.json
が以下のように変更されていると思います。
目的別メソッドの使い方
以降ではよく使うメソッドの使い方を目的毎にまとめます。なお、以降に出てくるsp
は上に掲載した基礎的なコードの中のスプレッドシート sp = session.spreadsheet_by_url("https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxxxxxxx/edit#gid=0")
、ws
はワークシートws = sp.worksheet_by_title("シート1")
です。このようにスプレッドシート、ワークシートにメソッドを繋げて処理していきます。
データ操作
セルの値を更新したり削除したりする時に使用します。なお、ここのメソッドは基本的に最後にsave
しなければスプレッドシートには反映されません。
ただし、以降に記載しているワークシートの削除を行うdelete
等はsave
せずとも即座に反映されるので注意が必要です。
スプレッドシート操作
ワークシート操作
ファイル、フォルダ操作
ファイルアップロード、ダウンロード
まとめ
RubyでGoogleスプレッドシートを読み込み・書き込みするためのコード、各メソッドの使い方をまとめました。今回記載した内容はGoogle Apps Scriptでもできるようなことが多いですが、上記を使ってRubyからGoogleスプレッドシートにアクセスし、その後でRubyならではの処理を施せば色々と応用できると思います。
関連記事
- 公開日:2018/05/30 更新日:2018/05/30
ブラウザの操作を自動化できるSeleniumをWSLからRubyで使う
フォーム送信や繰り返し行う必要があるブラウザ操作を自動化できるSeleniumをWindows Subsystem for Linux のUbuntuからRubyを用いて使用するための手順をメモします。
- 公開日:2018/05/27 更新日:2018/05/27
rbenvとruby環境の構築手順
WindowsのWindows Subsystem for LinuxでUbuntuを使いはじめ、その中にrbenvとRuby環境を構築したのでその手順をメモします。なお、UbuntuであればWindows Subsystem for Linux、仮想マシン、純粋なUbuntuのいずれでも同じ手順になります。思っていた以上に簡単に構築できました。
- 公開日:2018/05/06 更新日:2018/05/06
Google Drive APIの有効化とクライアントID、クライアントシークレットの取得方法
Googleスプレッドシートを自分で作成した外部のプログラムから値を読み込んだり書き込んだりするためには、まずGoogle Drive APIを有効化し、外部からアクセスするためのクライアントIDとクライアントシークレットを取得する必要があります。この記事ではその手順をまとめます。
- 公開日:2016/01/10 更新日:2016/01/10
Railsでwickedpdfを使ってPDF出力する
Ruby on RailsでPDF出力させるのに便利なgemはたくさんありますが、htmlをそのままPDF化してくれる「wickedpdf」が一番お手軽で楽でした。wickedpdfの導入手順と使用方法をメモします。
開発アプリ
