Last active
September 14, 2015 01:38
-
-
Save takeyuweb/10ac820c935e92d44f81 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # pubtra2freee | |
| # Pubtraで抽出・エクスポートした交通系SF利用明細CSVをfreeeで読み込みやすいように加工するスクリプトやっつけ版。 | |
| # | |
| # License: Public Domain (Unlicense) | |
| # | |
| # 配置 | |
| # pubtra2freee.rb | |
| # 2015/ | |
| # 01.csv ← pubtraで出力 | |
| # 02.csv ← pubtraで出力 | |
| # freee/ | |
| # 01_VIEWカード.csv | |
| # 01_Suica.csv | |
| # 2014/ | |
| # | |
| # 使い方 | |
| # D:\OneDrive\ドキュメント\takeyu-web\Suica>ruby pubtra2freee.rb | |
| # year:2015 | |
| # month:1 | |
| # ./2015/freee/01_VIEWカード.csv | |
| # ./2015/freee/01_Suica.csv | |
| # | |
| # 実行後、SFごとに別々にCSVに出力されます。 | |
| # 配置 | |
| # pubtra2freee.rb | |
| # 2015/ | |
| # 01.csv | |
| # 02.csv | |
| # freee/ | |
| # 01_VIEWカード.csv ← 処理済みファイル | |
| # 01_Suica.csv ← 処理済みファイル | |
| # 2014/ | |
| # | |
| # freeeへの取り込み | |
| # SFごとに口座を作成してCSVインポートします。 | |
| require 'csv' | |
| print "year:" | |
| year = gets.to_i | |
| print "month:" | |
| month = gets.to_i | |
| src = File.join(File.dirname(__FILE__), sprintf("%04d", year), sprintf("%02d.csv", month)) | |
| raise "file:#{src} is not found." unless File.file?(src) | |
| data = Hash.new do | |
| Array.new | |
| end | |
| i = 0 | |
| text = File.open(src, 'r:Windows-31J').read | |
| CSV.parse(text.encode('UTF-8')) do |row| | |
| next if row[9].to_i == 0 | |
| money = row[9].to_i * -1 | |
| memo = nil | |
| if row[5].empty? | |
| memo = row[10] | |
| else | |
| if money > 0 | |
| memo = "入金" | |
| else | |
| memo = "入:#{row[5]}(#{row[4]}) 出:#{row[8]}(#{row[7]})" | |
| end | |
| end | |
| data[row[12]] = data[row[12]].push([ | |
| row[0], | |
| money, | |
| memo | |
| ]) | |
| i = i.succ | |
| end | |
| dir = File.dirname(src) | |
| data.each do |key, value| | |
| dst = File.join(File.dirname(__FILE__), sprintf("%04d", year), "freee", sprintf("%02d_%s.csv", month, key)) | |
| dst_dir = File.dirname(dst) | |
| Dir.mkdir dst_dir unless File.directory?(dst_dir) | |
| CSV.open(dst, 'w+:Windows-31J') do |csv| | |
| csv << %w(利用年月日 入出金額 摘要) | |
| value.each do |row| | |
| csv << row | |
| end | |
| end | |
| puts dst | |
| end | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment