・Ubuntu 10.10 Desktop 64bit
・Ruby 1.9.2
・gdata 1.1.1
RailsからGoogleスプレッドシートのデータを取得して、DBにインサートするという機能を、今から作ろうと思っています。
Googleスプレッドシートのデータを操作するには、gdataというライブラリを使用します。
Ruby 1.9.2でgdataをrequireすると、下記のようなエラーが出てしまいます。
`require': no such file to load -- jcode (LoadError)
これを解消するためには、
$HOME/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/gems/1.9/gems/gdata-1.1.1/lib
の
require 'jcode'
$KCODE = 'UTF8'
この箇所を、$KCODE = 'UTF8'
if RUBY_VERSION < '1.9'
require 'jcode'
$KCODE = 'UTF8'
end
という風に書き換えます。require 'jcode'
$KCODE = 'UTF8'
end
あとは、
rubyからGoogle Data APIでGoogleDocsのSpreadSheetを参照してみた - 三並慶佐 - hi-fi-Net Blog
を参考に、セルの値を読み出してみます。
require "rubygems"
require "gdata"
client = GData::Client::Spreadsheets.new
client.clientlogin('******@gmail.com', 'enteryourpassword')
key = "****************************************"
sheet = 1
feed = client.get("https://spreadsheets.google.com/feeds/cells/#{key}/#{sheet}/private/full").to_xml
row_count = feed.elements['gs:rowCount'].text.to_i
col_count = feed.elements['gs:colCount'].text.to_i
puts "row_count=#{row_count}"
puts "col_count=#{col_count}"
sheet_data = []
feed.elements.each('entry') do |entry|
gs_cell_el = entry.elements['gs:cell']
col = gs_cell_el.attribute('col').value.to_i
row = gs_cell_el.attribute('row').value.to_i
text = gs_cell_el.text
puts "#{col} #{row} #{text}"
end
require "gdata"
client = GData::Client::Spreadsheets.new
client.clientlogin('******@gmail.com', 'enteryourpassword')
key = "****************************************"
sheet = 1
feed = client.get("https://spreadsheets.google.com/feeds/cells/#{key}/#{sheet}/private/full").to_xml
row_count = feed.elements['gs:rowCount'].text.to_i
col_count = feed.elements['gs:colCount'].text.to_i
puts "row_count=#{row_count}"
puts "col_count=#{col_count}"
sheet_data = []
feed.elements.each('entry') do |entry|
gs_cell_el = entry.elements['gs:cell']
col = gs_cell_el.attribute('col').value.to_i
row = gs_cell_el.attribute('row').value.to_i
text = gs_cell_el.text
puts "#{col} #{row} #{text}"
end
シートインデックスは、0ではなく、1から始まることに注意しましょう。
0 件のコメント:
コメントを投稿