Upload
hiroshi-sano
View
191
Download
0
Embed Size (px)
Citation preview
shizuoka.py #6 and shizudev LT確定申告をpythonで乗り切る
twitter@hrs_sano645
about me● Twitter@hrs_sano645● 静岡県富士市で自動車金型設計業のIT便利屋です
● 兼業ですが米農家です
● 東海大学 石井研究室に週一でお手伝いしてます
● 最近やってたこと○ fuji.5374.jp○ google-photos-enbedtab-generator○ pythonあんまり書かずに請求書ばかり作ってました
確定申告終わりましたか!やってみた人いますか?
まだ終わってない。。。今週来週頑張ります。。
(せっかく会計ソフトも入れたのになぜ、、)
思えば昨年始め
確定申告は毎年大変(帳簿とか請求書とか集めること)
最近流行りのクラウド会計ソフトを入れてみよう!!
どんなものがあるか
● freee● やよい会計クラウド
● MFクラウド会計・確定申告(MoneyFowerd)
とりあえずMoneyFowerd使ってたのでMFクラウド会計使って見た
(ステマじゃないよ!)
日々の業務に取り入れる...
インターネットバンキング経由で帳簿がまあまあ自動に作れるのありがたいです。
あるときに「MFクラウド請求書」なるサービスに気がつく
こういうサービス
MFクラウド請求書の特徴● MFクラウド会計と連携。帳簿に自動的に計上
● GUI/ブラウザベース
● PDFが作れる
そうなんだ!すごーい!
日常業務に取り入れる→快適!
月日が流れて年末頃...
日々忙しく過ごしてると
請求書出し忘れて慌てる自体多数
MFクラウド請求書の特徴● MFクラウド会計と連携。帳簿に自動的に計上
● GUI/ブラウザベース
● PDFが作れる
割りと入力する場所が多いマウス操作が多めで1枚作るのにそれなりに時間がかかってる
早く作りたいのに作れないGUI ここ一番に来て 面倒に...
とある日、ヘルプ探索してると気がつく
API???!!!REST APIがあるらしい!
● 請求書作成ソフト「MFクラウド請求書」
○ oauth2認証を使う
○ 請求書の作成
○ PDFがダウンロードできる
請求書作成がAPI経由でできる!
MFクラウド請求書 APIの概要
どうやってやる?
もちろんPython!
考えなければいけないこと
● oauth2の認証どうするか
● 実際にPDFのダウンロードをどうするか
oauth2どうする?
oauth2client これはgoogle向けっぽくて使い勝手が謎
oauth2(pipのパッケージ名 )
汎用紛らわしいけどoauth1向けのパッケージ
python-oauth2(pipのパッケージ名 )
汎用らしい。WEBサービスの組み込みに特
化してるっぽい
oauthlib これが一般的なoauthライブラリかも , v1もv2も対応
requests-oauthlib requests向けのoauthlibサポートパッケージ
oauth2どうする?
oauth2client これはgoogle向けっぽくて使い勝手が謎
oauth2(pipのパッケージ名 )
汎用紛らわしいけどoauth1向けのパッケージ
python-oauth2(pipのパッケージ名 )
汎用らしい。WEBサービスの組み込みに特
化してるっぽい
oauthlib これが一般的なoauthライブラリかも , v1もv2も対応
requests-oauthlib requests向けのoauthlibサポートパッケージ
requests-oauthlib
いい響きですね :D
pip install書かなくてもいいレベルですが
pip install requests-oauthlib
(自動的にrequests, oauthlibも入ります)
oauth2認証MFクラウド請求書API側で
アプリのクライアントトークンを作る
● scope(ほしい権限, write>read)
● redirect url(認証後のcodeを飛ばすリダイレ
クト先)
↓
● Client ID● Client Secret
https://example.com
oauth2認証githubを扱うチュートリアルを参考に
from requests_oauthlib import OAuth2Session
# 取得したClient ID, Client Secret を入力
client_id = "***"client_secret = "***"
# MFクラウド請求書のOAuthで使うエンドポイントURLauthorization_base_url = 'https://invoice.moneyforward.com/oauth/authorize'
token_url = 'https://invoice.moneyforward.com/oauth/token'
oauth2の認証#セッション作成
mfcloud_invoice = OAuth2Session(client_id, scope="write",redirect_uri="https://example.com", state=None)
#認証
authorization_url, state = mfcloud_invoice.authorization_url(authorization_base_url)
#(次のページで認証した後のコールバックURLを貼り付ける)print('Please go here and authorize,', authorization_url)redirect_response = input('Paste the full redirect URL here:')
認証用URLからリダイレクトURLを作る
PDFをダウンロードする
requestsでそのままダウンロード。保存は普通にファイルとして
# 請求書のIDをDLinvoice_id = json.loads(invoice_list.content)["billings"][0]["id"]
# 適当なファイル名で保存:filename = f"invoice_{invoice_id}.pdf"with open(filename, 'wb') as fd: for chunk in invoice_pdf.iter_content(chunk_size=128): fd.write(chunk)
pickleでtoken保存token保存しておけば毎回認証する必要もなくなる
# アクセストークンを使ってfetchする
token = mfcloud_invoice.fetch_token(token_url, client_secret=client_secret, authorization_response=redirect_response)
# 取得したtokenをpickleで直列化
with open("access_token.dat", "wb") as access_token_cache: pickle.dump(token, access_token_cache)
結構簡単でいいね!
まとめ
● 確定申告面倒だからお早めに
● クラウド会計サービス使うと楽できます
● 不便なところは(できれば)自分たちでなんとかする
● requests-oauthlib便利なのでおすすめです!○ 今日一番言いたかったこと
● いらすと屋さん汎用性高すぎる
こうして確定申告が
まだ終わってないです!
今週来週頑張って終わらせます。。