MAGAZINE

ルーターマガジン

Ruby

[入門編] RubyからGoogleスプレッドシートを操作する簡単チュートリアル

2019.10.11
Pocket

こんにちは、学生アルバイトのkoyamaです、今回はGoogleスプレッドシートやGoogleドキュメント・GoogleDriveなどの様々なプロダクトを操作できるrubyのgemであるgoogle-drive-rubyをご紹介します。
今回はこのgemのうち、googleスプレッドシート周りの機能についてフォーカスして紹介させていただきます。

使い方のご紹介

インストールは例によって $ 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 byGMO
RubyでGoogle スプレッドシートを操作する

RubyでGoogle Drive/スプレッドシートを扱う - Qiita
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

Pocket

CONTACT

お問い合わせ・ご依頼はこちらから