スプレッドシートを使ってオリジナルの家計簿を作成しよう!~機能紹介編~

アプリ

こんにちは、にゃむにゃむ(@nyamu_hack)です。前回は私がスプレッドシート自作している家計簿シートについて解説しました。

この記事では、どの様なデータを集計して、表示しているのかの説明をしましたが、「クレカ連携」や「収支の手入力」機能をどの様に実現しているのかは説明しませんでした。なので、今回はそこをメインに説明していきます!是非最後までご覧ください

収支の手入力機能

マネフォだと右下にあるフローティングボタンから収支の登録が行えますよね。

では、スプレッドシートではどうやって収支を追加するのでしょうか。さすがにスプレッドシートを毎回開くのはめんどくさいですよね。今回はgoogle formを使用して収支の登録を行なっています。

google formはスプレッドシートと連携することが可能で、フォームで送信した結果の一覧をスプレッドシートの特定のシートに貯めることが可能です。

こちらが、google formで実際に作成したフォームです。

日付、金額、カテゴリー、支払い内容の詳細を記入する簡単なフォームですね

このフォームで送信した内容が、スプレッドシートにはこのような形で集計されることになります。

このフォームのリンクをスマホのホーム画面に追加しておけば、1タップで開くことができるので便利です。

クレカ連携

マネフォの便利な点は、収支をクレカ情報から自動で取得して、家計簿に反映してくれる点ですよね。その機能は、スプレッドシートでどの様に再現すればいいでしょうか。

残念ながら、一般的な市民がクレカでの取引情報を簡単に引っ張ってこれる様なAPIはなかなか存在しません。楽天銀行には楽天銀行APIというものが存在して、デビッドカードなどでの取引情報を取得することができますが、有料かつ企業向けのAPIという感じですね。ちなみにマネフォはこの楽天銀行APIを介して楽天銀行のデータを自動連携しています。

なので、今回私はクレジットカードを利用したときに自動送信されてくる「利用速報」のメールを用いて家計簿への自動連携機能を実現しました。

自分は楽天カードを使用しているので、決済する度にこの様なメールが届きます。このメールには、「利用日」「利用先」「利用金額」の情報が記載されているので、この情報をスプレッドシートに連携していきます。

楽天カードから送られてくる利用速報のメール

この決済情報をスプレッドシートに連携する方法として、Google Apps Scriptを使用しました。

技術ブログではないので詳細は割愛しますが、Google Apps Scriptというのはgoogleが提供しているプログラミング言語で、gmailやスプレッドシート、google formなど、googleのサービスと連携して使用することができます。

図としてはこの様な流れになりそうです。

今回作成する機能の流れ

ざっとプログラムの方も載せるとこんな感じです(主要な関数のみ載せており、一部割愛しています。詳細が知りたい方はお問い合わせからリクエストお願いいたします)。

function parseFromRakutenCreditMail(t) {
  const price = t.match(/■利用金額:\s(.*?)\s/g).map(s => s.replace("■利用金額:", "").replace(",", "")) // メールの本文から利用金額を取得する
  const shopName = t.match(/■利用先:\s(.*?)\s/g).map(s => s.replace("■利用先:", "")) // メールの本文から利用先を取得する
  const date = t.match(/■利用日:\s(.*?)\s/g).map(s => s.replace("■利用日:", "")) // メールの本文から利用日を取得する
  const res = price.map((_, index) => ({ price: price[index], shopName: shopName[index], date: date[index] }));
  return res
}

function RakutenCreditMailBatch() {
  const mailList = getMail("カード利用のお知らせ(本人ご利用分) -【速報版】") // gmailの受信ボックスから、タイトルが「カード利用のお知らせ(本人ご利用分) -【速報版】」となっているメールを取得する
  for (const mail of mailList) {
    const parseRes = parseFromRakutenCreditMail(mail.message)
    for (pr of parseRes) {
      postForm(pr.price, pr.shopName, 'etc', pr.date) // google formに上記で取得したデータを送信する
    }
    mail.messageObj.star()
  }
}

このプログラムを毎日夜に自動で走らせる設定をしています。すると、翌朝になると自分がカードを使用して決済した情報がスプレッドシートに自動反映される様になり、マネフォと同等の機能を実現することができました。

まとめ

いかがでしたでしょうか。スプレッドシートとGoogle Apps Scriptを使うと、色々な機能を実現できることが伝われば良いなと思います。にゃむにゃむはこのシートを使って2024年も賢く家計管理していこうと思います!今年もよろしくお願いいたします!

コメント

タイトルとURLをコピーしました