スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

メールで家計簿をつけるための集計スクリプト

家計簿つけなーっと思い立ち、携帯メールで日々の出費を記帳したいと思い、特定のメールに書かれている本文を表にして集計し易くするスクリプトを書きました。Python触るの久々~

プログラム言語:Python2.6.2
対象メールサーバ:Gmail

目的:
-------
食品 100
外食 550
雑貨 210
-------
こんな日々のメールを、1ヵ月貯めた後で自動でまとめるスクリプト。まとめると言っても、表にするだけですけど。表にしたあとはExcelなどの表計算ソフトで集計すればいいやってもの。



GmailはIMAPというメールサーバ上の電子メールにアクセスし操作するためのプロトコルを推奨しているので、それを使いました。PythonにはIMAPを使うためのモジュールがデフォルトであります。

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
import imaplib
from email.header import decode_header
 
 
gmail = imaplib.IMAP4_SSL('imap.gmail.com')
user_id = raw_input('mail address: ')
user_pw = raw_input('password: ')
gmail.login(user_id, user_pw)
 
gmail.select('INBOX')
_,[data] = gmail.search(None,'(SUBJECT "KAKEIBO")')
 
output = ""
 
for i in data.split(' '):
 
_,txt= gmail.fetch(i,'(BODY[TEXT])')
txt = txt[0][1].strip()
txt = unicode(txt,'iso-2022-jp')
 
_,tm = gmail.fetch(i, '(INTERNALDATE)')
tm = imaplib.Internaldate2tuple(tm[0])
tm = "%s/%s/%s," % (tm[0],tm[1],tm[2])
 
for ln in txt.split('\r\n'):
if len(ln) == 0:
continue
ls = ln.split(" ")
if len(ls) < 2:
continue
if ls[1] == "":
continue
 
ln = ln.replace(" ",",")
ln = tm + ln + "\n"
output += ln
 
gmail.close()
gmail.logout()
 
f = file('output.csv','w')
f.write(output.encode('shift-jis'))
f.close()
 
print output
raw_input("Press ENTER to exit")
 


仕様:
・件名に”KAKEIBO”が含まれたメールの本文を表(CSVファイル)にして出力する。
・携帯メールのフォーマット
-------
件名:KAKEIBO
本文:
食品 100
外食 550
雑貨 210
娯楽
-------
品名と値段は半角スペースで区切る。数値がない場合は集計されないので、上記の場合「娯楽」の項目は無視される。携帯電話側でテンプレートを作っておくと便利。
・読んだメールを削除とかはしない。メールソフト、WEBサービス等利用して自分でやることを想定。

注意:
・文字コードの判定はしてないので、機種・キャリアによってはiso-2022-jpじゃないかも。


参考:
・Gmailのメール一覧を取得
http://d.hatena.ne.jp/mzp/20080816/imap
・Python から Gmail を使う (1)
http://plaza.rakuten.co.jp/kugutsushi/diary/201105220001/


本当はGoogleドキュメントのフォーム機能を使って家計簿をしたかったのだけど、auだと使えなかった;;
関連記事

コメント

コメントの投稿

非公開コメント

このブログについて
□ ブログ内容
決まった趣旨はありません。
興味を持ったこと・日常で行ったことを何でも書きます。

3DCG・プログラミングなどが多めです。

□ 現在の活動
・ウェブサイト制作
 (http://tiblab.net)
・3Dゲーム制作
 (コックパニック)
検索フォーム
ユーザータグ

Blender キャプチャ blendファイル BGE Python GameEngine ムービー Android CG  Red5 Terragen C# C++ 

カテゴリー
プロフィール

TiBra

Author:TiBra
趣味でCG制作、プログラミング等を行っています。メイカーズに憧れています。

ネットを通じた交流を広げたく思っていますので、コメント・メールはお気軽にどぞー

戯言程度のことは、こちらのブログに投稿しています。基本戯言なので、実質移転しているようなものです。

Mail:tibraあっとlive.jp
HP:TibLabmemocode
動画:VimeoFC2動画ニコニコ
ファイル:SkyDrive
企画:3Dゲーム作業実況

Blogリンク
不都合がございましたらご連絡ください。
当ブログのリンクバナー
FC2 ID
FC2カウンター
RSSフィード+解析コード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。