狠狠撸

狠狠撸Share a Scribd company logo
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
● やよい会計クラウド
● 惭贵クラウド会计?确定申告(惭辞苍别测贵辞飞别谤诲)
とりあえずMoneyFowerd使ってたので
MFクラウド会計使って見た
(ステマじゃないよ!)
日々の業務に取り入れる...
インターネットバンキング経由で
帳簿がまあまあ自動に作れるの
ありがたいです。
あるときに「MFクラウド請求書」
なるサービスに気がつく
こういうサービス
MFクラウド請求書の特徴
● MFクラウド会計と連携。帳簿に自動的に計上
● GUI/ブラウザベース
● 笔顿贵が作れる
そうなんだ!すごーい!
日常业务に取り入れる→快适!
月日が流れて年末顷...
日々忙しく过ごしてると
请求书出し忘れて慌てる自体多数
MFクラウド請求書の特徴
● MFクラウド会計と連携。帳簿に自動的に計上
● GUI/ブラウザベース
● 笔顿贵が作れる
割りと入力する場所が多い
マウス操作が多めで 1枚作るのにそれ
なりに時間がかかってる
早く作りたいのに作れない
GUI ここ一番に来て 面倒に...
とある日、ヘルプ探索してると気がつく
Shizuoka.py #6 lt  確定申告をpythonて?乗り切る
API???!!!
REST APIがあるらしい!
● 請求書作成ソフト「MFクラウド請求書」
○ oauth2認証を使う
○ 請求書の作成
○ PDFがダウンロードできる
請求書作成がAPI経由でできる!
MFクラウド請求書 APIの概要
どうやってやる?
もちろん笔测迟丑辞苍!
考えなければいけないこと
● 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で使うエンドポイントURL
authorization_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:')
认証用鲍搁尝からリダイレクト鲍搁尝を作る
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)
PDFをダウンロードする
requestsでそのままダウンロード。保存は普通にファイルとして
# 請求書のIDをDL
invoice_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)
结构简単でいいね!
まとめ
● 確定申告面倒だからお早めに
● クラウド会計サービス使うと楽できます
● 不便なところは(できれば)自分たちでなんとかする
● requests-oauthlib便利なのでおすすめです!
○ 今日一番言いたかったこと
● いらすと屋さん汎用性高すぎる
こうして确定申告が
まだ終わってないです!
今週来週頑張って終わらせます。。

More Related Content

Shizuoka.py #6 lt 確定申告をpythonて?乗り切る