wide and deep

MoneyForwardから取得した資産推移CSVをGsheetからいい感じに閲覧する

はじめに

昨日書いた記事でMoneyForwardから資産推移CSVを自動取得するところまで書きました. catdance124.hatenablog.jp

これをどうにかグラフ化してスマホから確認したいな~というところで選択肢は3つあります.

簡単な方がいいよね...ということで3つ目のスプレッドシートに書き込み,閲覧の方向で実装しました.

結果はこちら↓
f:id:catdance124:20210929195931p:plain
スマホから見たグラフ
f:id:catdance124:20210929195949p:plain
数値はでたらめですよ,もちろん😣

なお,いい感じのグラフ作成は下記記事を参考にしてさせていただきました. fire-hiko.com

この記事では

ことを説明します.

実装はこちら(昨日の記事でリポジトリを分けるといいましたが,あれは嘘でした)

github.com

CSVスプレッドシートに書き込む

前述の記事でMoneyForwardから落としてきたall.csvスプレッドシートに書き込むことを考えます.

まず,書き込むために色々準備が必要です. 下記記事を参考に準備しましょう.

qiita.com

順番通りやっていけば,jsonファイルが手に入るはずです.
このファイルをclient_secret.jsonとして保存しておきます.

あとは,書き込み先のシートのキーが必要です.
https://docs.google.com/spreadsheets/d/<ここの部分です>/edit

これをconfig.iniに書いておきます.
あとシートの名前も書いておきます.

# config.ini
[SPREAD_SHEET]
Key = 1_*****
Worksheet_name = 資産推移データ(自動入力)

この設定を使ってpythonからスプレッドシートにall.csvを書き込んでみます.

短いのでベタ貼り↓

import configparser
import csv
import gspread
from oauth2client.service_account import ServiceAccountCredentials


def connect_gspread(json_path, spreadsheet_key):
    scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
    credentials = ServiceAccountCredentials.from_json_keyfile_name(json_path, scope)
    gc = gspread.authorize(credentials)
    workbook = gc.open_by_key(spreadsheet_key)
    return workbook

def main():
    config_ini = configparser.ConfigParser()
    config_ini.read('config.ini', encoding='utf-8')
    spreadsheet_key = config_ini.get('SPREAD_SHEET', 'Key')
    spreadsheet_worksheet_name = config_ini.get('SPREAD_SHEET', 'Worksheet_name')
    
    workbook = connect_gspread(json_path="client_secret.json", spreadsheet_key=spreadsheet_key)
    workbook.values_update(
        spreadsheet_worksheet_name,
        params={'valueInputOption': 'USER_ENTERED'},
        body={'values': list(csv.reader(open("../csv/all.csv", encoding='shift-jis')))}
    )


if __name__ == "__main__":
    main()

もう書いてることそのままです.

スプレッドシートに接続して,設定にあるシート名のシートにlist化したcsvを貼り付けているだけです.

これで資産推移データの自動更新ができました.(あとはcronに登録などお好きに)

3ヶ月,半年,一年など各期間のシートを作成する

下記記事のスプレッドシートを参考に(コピペして)グラフを作成します.
fire-hiko.com

コピーさせていただき...
f:id:catdance124:20210929201505p:plain

ペーストします
f:id:catdance124:20210929201550p:plain

グラフを編集し
f:id:catdance124:20210929201609p:plain

データ範囲を調整します
f:id:catdance124:20210929201656p:plain

できたやつを「個別のシートに移動」させれば
f:id:catdance124:20210929201734p:plain

見やすいグラフができあがります
f:id:catdance124:20210929201821p:plain

これはデータを全件選択しているので,全期間ということになります.

半年で作成したければ,データ範囲を180にしたり,
f:id:catdance124:20210929201947p:plain

3ヶ月で作成したければデータ範囲を90にすればOKです.

あとはスマホで見やすいようにレイアウトを微調整すれば完成です.
(数値はでたらめです) f:id:catdance124:20210929202210p:plain

おわりに

これでグラフを見られるのでMoneyForwardに課金する必要がなくなりました
月500yenというのもチリツモなので...