MAGAZINE
ルーターマガジン
Ruby
[入門編] RubyからGoogleスプレッドシートを操作する簡単チュートリアル
2019.10.11
こんにちは、学生アルバイトのkoyamaです、今回はGoogleスプレッドシートやGoogleドキュメント・GoogleDriveなどの様々なプロダクトを操作できるrubyのgemであるgoogle-drive-rubyをご紹介します。
今回はこのgemのうち、googleスプレッドシート周りの機能についてフォーカスして紹介させていただきます。
GitHub - gimite/google-drive-ruby: A Ruby library to read/write files/spreadsheets in Google Drive/Docs.
使い方のご紹介
インストールは例によって$ gem install google_drive
で行います。
では早速、スプレッドシートへの書き込みをやってみましょう。
require 'google_drive' ws = session.spreadsheet_by_key("spreadsheet-key-from-url").worksheet_by_title("sheet")
spredsheet_by_key-from-url
の部分には編集したいスプレッドシートのurlの/d/から/editまでの中にある文字列を入れてください。
初回起動時にはターミナル上に認証用のurlが出てきますので、ローカルのブラウザから開いて認証コードを入力しましょう。
puts ws[1,1] #=> "" ws[1,1] = "this is it" ws.save puts ws[1,1] #=> "this is it"google-drive-rubyでは、それぞれのセルをws[1,1]やws["A1"]のようにして選択します。 セルの中身を更新するときは任意のセルに値を代入し、.saveで更新します。
ws.update_cells(1,1,["こんにちは","テスト","です"])という風にして複数のセルを一度に更新することも可能です。
string = ws.export_as_string #=> "a,b,c,d\r\ne,f,g,h\r\ni,j,,m"このようにして、シート全体をcsv形式の文字列として出力することもできます!
実際に使ってみた
最後にrooterのHPのニュース欄をスクレイピングしてスプレッドシートにまとめて見ましょうrequire 'google_drive' require 'nokogiri' require 'net/http' require 'uri' session = GoogleDrive::Session.from_config("google_drive_config.json") ws = session.spreadsheet_by_key("ここは任意のシートkey").worksheet_by_title("sheet") charset = nil html = open("https://rooter.jp/news/","r") do |f| charset = f.charset f.read end doc = Nokogiri::HTML.parse(html, nil, 'utf-8') title = doc.at_css('title') puts title.children.text articles = [] headline = doc.at_css(".site-main").at_css(".contents-area").at_css("div.archive-list").css(".tile") headline.each do |article| link = article.at_css("a").attributes["href"].value title = article.at_css(".article-title").text.strip articles.push({:title => title, :link => link}) end ws.update_cells(1,1,[["title","link"]]) ws.set_background_color(1, 1, 1, 2, GoogleDrive::Worksheet::Colors::CYAN) articles.each_with_index do |line, i| ws.update_cells(2+i,1,[[line[:title],line[:link]]]) end ws.save結果はこのようになりました! 簡単にスプレッドシートへスクレイピング結果を反映できたんじゃないでしょうか? 皆さんも一度google-drive-rubyを試してはいかがでしょう!
参考文献
RubyでGoogle スプレッドシートを操作する | GMOアドパートナーズグループ TECH BLOG byGMORubyでGoogle Drive/スプレッドシートを扱う - QiitaRubyでGoogle スプレッドシートを操作する
https://qiita.com/koshilife/items/4baf1804c585690fc295
GitHub - gimite/google-drive-ruby: A Ruby library to read/write files/spreadsheets in Google Drive/Docs.
https://github.com/gimite/google-drive-ruby
CONTACT
お問い合わせ・ご依頼はこちらから