LoginSignup
5
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2021-03-04

はじめに

最近ですが、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関数をスプレッドシートに書き込んでます。

let doc = new GoogleSpreadsheet(sheetId);// スプレッドシートIDを指定

// 認証関連のコードは省略します(※そのうちQiitaに記事書きます)
// スプレッドシート(doc)から、対象のシート(sheet)を取得したところから書きます。

// query関数を書き込むセルの指定
await sheet.loadCells('F1');
let cell = 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 (let i = 2; i <= index; i++) {
  await sheet.loadCells(`H${i}`);
  let cell = sheet.getCellByA1(`H${i}`);
  cell.formula =  `=SPARKLINE(G${i}, {"charttype","bar";"max",MAX(G:G)})`;
  sheet.saveUpdatedCells();
}
sheet.saveUpdatedCells();

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

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

今後の改良点

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

最後に

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

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1