/zaim_io_tool

Zaimに登録している家計簿をアップロード、ダウンロードするツール

Primary LanguagePython

zaim_io_toolの概要

zaim_io_toolは、Zaimに登録している家計簿をCSV形式でアップロードおよびダウンロードできるツールです。
ZaimのWebサイト上での以下の操作を、Pythonを使ってコマンドラインから実行できます。

  • ZaimのWebサイトにログイン
  • 「ファイル入出力」のページに移動
  • 家計簿のデータをCSV形式でアップロードまたはダウンロード

必要条件

  • OS
    • Linux
      • 動作確認OSはUbuntu 20.04のみ
    • ※WindowsとMacでの動作は未確認
  • ツール
    • Python3
      • 3.9.7でのみ動作確認
    • pip3
      • Pythonパッケージをインストールするのに必要

事前準備

パッケージのインストール

以下のコマンドで、ツールを動かすのに必要なパッケージをインストールします。

pip3 install -r requirements.txt

Zaimにログインするための認証方法の設定

.env.sample.envという名前でコピーします。
以下の2つの環境変数を、お使いのアカウントのユーザ名とパスワードに変更します。

ZAIM_USERNAME="your-email@example.com"
ZAIM_PASSWORD="password"

↓ 変更例

ZAIM_USERNAME="your-true-email@example.com"
ZAIM_PASSWORD="01234567"

使い方

家計簿のダウンロード

$ python3 download.py -h
usage: download.py [-h] [-o OUTPUT] [-e ENV_FILE] [-c CHARSET] year month

ZaimのWebサイトから指定した月の家計簿をダウンロード

positional arguments:
  year                  取得年
  month                 取得月

optional arguments:
  -h, --help            show this help message and exit
  -o OUTPUT, --output OUTPUT
                        出力ファイル名を指定(デフォルト output.csv)
  -e ENV_FILE, --env-file ENV_FILE
                        .envファイル名指定(デフォルト .env)
  -c CHARSET, --charset CHARSET
                        文字コード指定(utf8(default)またはsjis)

利用例

2024年1月の家計簿をダウンロードする例です。

実行コマンド

python3 download.py 2024 1 -o ./csvoutput/202401.csv

出力結果

Trying to login...
Downloading csv file...
Saved as ./csvoutput/202401.csv.

注意事項

  • 現時点では月単位でしかcsvファイルをダウンロードできません。
  • 無料会員でダウンロードする場合
    • 以下の項目が取得できず、代わりに全て"(プレミアム会員で表示)"という文字列が表示されてしまいます。
      • 通貨, 振替, 残高調整, 通貨変換前の金額, 集計の設定
    • 「支出」「収入」「振替」のうち、「振替」のデータはダウンロードできないようです。

家計簿のアップロード

$ python3 upload.py -h
usage: upload.py [-h] [-e ENV_FILE] input

ZaimのWebサイト経由で家計簿のcsvファイルをアップロード

positional arguments:
  input                 入力ファイル名を指定

optional arguments:
  -h, --help            show this help message and exit
  -e ENV_FILE, --env-file ENV_FILE
                        .envファイル名指定(デフォルト .env)

利用例

実行コマンド

python3 upload.py csvinput/input-20240118.csv

出力結果

Trying to login...
Uploading csv file...
Upload of csv file completed.

注意事項

  • アップロード用のcsvファイルが必要です。csvファイルのデータはZaimのフォーマットになっている必要があります。データーフォマットが具体的にどのようなものかは、csvinput/sample.csvやZaimのWebサイトからダウンロードしたcsvファイルの内容をご確認ください。
  • アップロード用のcsvファイルの文字コードはUTF-8の必要があります。Shift_JISコード等での動作は未確認です。
  • csvinput/sample.csvを指定することでアップロードの動作確認が可能ですが、架空の口座情報(楽天カード XXXX-XXXX-XXXX-XXXX等)が追加されてしまう点にご注意ください。尚、追加された口座情報の削除はできませんが、非表示にすることは可能です。
  • 無料会員でアップロードする場合
    • 「カテゴリ」や「カテゴリの内訳」の列にZaimに登録されていないものが含まれるとアップロードに失敗します(Zaimサイトの参考情報
      • ↑アップロードに失敗した場合でも、スクリプトは現状正常に処理が終了してしまいます。お手数ですがWebサイトやZaimのアプリで正常にアップロードできているかをご確認ください。

Author

showchan33

License

"zaim_io_tool" is under GPL license.