2012-02 << 2012-03 >> 2012-04

2012-03-12 (月)

*[ruby] みずほ銀行の口座情報をGoogle docsに同期

通帳の記帳とか面倒くさくて実質不可能だし,みずほダイレクトはログイン難しくて人間がやる作業とは思えないので,みんな似たようなことやってるだろうけど,コードとか貼っておく.

毎回思うけど,コードを日記に貼り付けると,なんだか手軽にそれっぽくなって良いですね.

Google Spreadsheet用のライブラリとみずほダイレクト用のライブラリが,別々のhttpclientを使ってるのがいやだったので,同じもので動くようにした.クッキーの扱いが不完全なせいで,無駄なアクセスしているのを後で直そう.

というわけで,はてなグラフからGoogle docsへの移行は完了.近いうちに古いやつはcronから消す.過去の情報もインポートしておきたいけど,はてなグラフには日ごとの残高しか記録してなったので,ログから復元するか….

みずほダイレクト,以前は何か操作をミスする度に10分間ロックされてしまって,デバッグ面倒くさかったのだけど,もしかしてそういう制限なくなった?

ソース: https://github.com/binzume/mizuhodirect2googlespreadsheet-ruby

#!/usr/bin/ruby -Ku
require "rubygems"
require 'yaml'
require 'time'
require_relative "mizuhodirect/mizuhodirect"
require_relative 'googlespreadsheet/spreadsheet'

mizuho_account = YAML.load_file('mizuho_account.yaml')
google_account = YAML.load_file('account.yaml')

spreadsheet_key = "*******************************************"

# spreadsheet
session = GoogleSpreadsheet.login(google_account['email'], google_account['passwd'])
ws = session.spreadsheet_by_key(spreadsheet_key).worksheets[0]

# find last (FIXME!
last = ws[ws.row_count]
unless last[0]
  last = ws[ws.row_count-1]
end

# mizuho login
m = MizuhoDirect.new
unless m.login(mizuho_account)
  puts "LOGIN ERROR"
end

begin
  account_status = m.get_top
  puts 'total: ' + account_status["zandaka"].to_s

  st = nil
  account_status["recentlog"].each{|row|
    if Time.parse(last[0])==Time.parse(row[0]) && last[1].to_i == row[1] && last[2].to_i == row[2]
      st = row
    end
  }
  account_status["recentlog"].each do |row|
    if st
      if row == st
        st = nil
      end
      next
    end
    p row
    ws << row
  end
  ws[ws.row_count,5] = account_status["zandaka"]

ensure
  m.logout
end

puts "ok"

それにしてもrexml遅いなーと思って,rexmlのソース読んだら納得した.読んでて面白いけど,もう少し普通で高速なxmlライブラリを標準にしてほしいな.

2012-02 << 2012-03 >> 2012-04