Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8956

LINE × スプレッドシートのススメ(家計簿アプリ編)

$
0
0

はじめに

最近ですが、LINEでやり取りするトランザクションデータをデータベースではなく、ユーザのスプレッドシートで直接管理することを推してます

メリットとしてはこんな感じです。
1. サービス内でデータを保持しないということは、データ保持の責任リスクを軽減できる
2. ユーザに馴染みのあるExcel形式であり、スプレッドシートの機能で可視化できるのでデータ分析もしやすい

このメリットを活かすサービスとして、家計簿アプリを作りました。

家計簿アプリについて

コンセプト

  1. 後で家計簿に書こうとしても、ついつい忘れてしまう。なので、モバイルアプリで買ったその場で登録!!
  2. それでも人間は忘れてしまう。そんな時は、モバイルアプリでちまちま登録せず、PCでまとめて登録しよう!!
  3. 使い慣れたExcel形式だから、自分の好きなようにデータ分析もできる!!

2020_AdventCalendar用画像.png

2020_AdventCalendar用画像 (1).png

一応、以前作ったプレゼンですが、こちらでもコンセプトを語ってます。

(参考)LIFF×スプレッドシートのススメ

今回の改良点

今までは単純に買ったものをスプレッドシートに書き込むだけでした。
qiita①.png

巷でこんな声を聞きました。
「買い物してたら、ついつい買いすぎちゃって、月の生活費の予算を超えちゃったわ」

・・・なるほど。
じゃあ、月のトータル金額が見れるようにしましょう。

サーバー環境

サーバサイドはNode.jsで作っており、スプレッドシートの操作は以下のモジュールを使ってます。
google-spreadsheet

※Githubにも全ソースを上げてますが、以下のソースコードはQiitaに載せるにあたって分かりやすくするためにGithubのソースコードとは多少異なります。

家計botアプリ

まずは月の集計金額を出す必要があるので、query関数をスプレッドシートに書き込んでます。

letdoc=newGoogleSpreadsheet(sheetId);// スプレッドシートIDを指定// 認証関連のコードは省略します(※そのうちQiitaに記事書きます)// スプレッドシート(doc)から、対象のシート(sheet)を取得したところから書きます。// query関数を書き込むセルの指定awaitsheet.loadCells('F1');letcell=sheet.getCellByA1('F1');// 関数を書き込む際は「formula」を使います。cell.formula=`=query(A:C,"select B,sum(C) where B is not null group by B label B 'sum 買ったもの'",1)`;sheet.saveUpdatedCells();

これで、query関数を用いて集計できました。
qiita②.png

これだけではツマラナイので、グラフも入れて分かりやすくしてみます。
とはいえ、スプレッドシートの関数でグラフ化ができるのは今のところ少ないようです。

※本当は円グラフを使いたかったのですが、関数ではできないようなので棒グラフにしてみました。

// for文でぐるぐる回して、SPARKLINE関数を使って棒グラフを追加してますfor(leti=2;i<=index;i++){awaitsheet.loadCells(`H${i}`);letcell=sheet.getCellByA1(`H${i}`);cell.formula=`=SPARKLINE(G${i}, {"charttype","bar";"max",MAX(G:G)})`;sheet.saveUpdatedCells();}sheet.saveUpdatedCells();

すると、こんな感じでグラフが出ました
qiita③.png

モバイルでも確認できますので、買い物中も見れます

今後の改良点

実は、買ったもの(商品名)で集計しているので、例えば「生活費」みたいなカテゴリで集計する形にはまだなってません。
今度はその辺りを直したいと思ってます。

最後に

今回は改良した部分を中心に記事を書きましたが、そもそもユーザのスプレッドシートに書き込むための設定方法については書いてません。
次回はその辺りを書きたいと思います。


Viewing all articles
Browse latest Browse all 8956