Rubyで確定申告楽したい
Kanazawa.rb Meetup #67
Takayuki Takagi
自己紹介
今日の話
個人用口座のデータ抽出
作ったやつ
load ‘lib/mufg.rb’
mufg = Mufg.new()
mufg.import(‘mufg-2017.csv’)
mufg.parsed_data.map{|d| d.summary }.uniq
=> ["年金", "振込1", "振込IB1", "カードC1", "電気",
"電話","税金", "国年基金", "振替/定期", "カ−ド",...]
# importメソッドでCSVデータがparsed_dataに取り込まれる
# 各カラムに対応するread_attr設定済み
# 項目一覧を抽出して必要そうな項目を見つける
# 年金は控除に必要そうだからこの支払い一覧欲しいなという気持ちになる
作ったやつ
# 年金の支払い一覧を抽出するパターン
mufg.parsed_data
.select{|d| d.summary == '年金' }
.map{|d| "#{d.date}, #{d.payment}, #{d.summary_description}" }�=> ["2017/1/4, 16260, コクミンネンキン",� "2017/1/31, 16260, コクミンネンキン",� "2017/2/28, 16260, コクミンネンキン",� ...� ]
# 経費についてはこの様な結果を1件ずつfreeeにコピペして登録した
# (この作業はだるい)
作ったやつ
# 取り込んだCSVデータは配列になってるので自由に操作可
# 年金支払い総額を知りたい
# 畳み込み処理はRubyではfoldじゃなくてreduce|injectだったのを忘れていた
mufg.parsed_data
.select{|d| d.summary == '年金' }
.reduce(0){|sum, d| sum + d.payment }�=> 276940
コンバーター
作ったやつ
# カンマ入り数値を整数クラスの値に変換する
converters = {� integer: -> (f) {� begin� e = f.encode(CSV::ConverterEncoding)� e =~ /[\d,]+/ ? Integer(e.gsub(/,/, '')) : f� rescue� f� end� }�}
CSV.foreach(filename, converters: converters[:integer])
まとめ