夫婦で共有できる家計簿をgoogleスプレッドシート・フォームで書いてみた【Google Apps Script】

ライフハック

なるふぉです。

シェアハウスや夫婦などで,共通の家計簿をつける必要のある場合があると思います.

家計簿アプリを使用しても,ほとんどの家計簿アプリは個人用で、複数で同じものを使うのは少しむずかしいですね。

今回はGoogle Apps Script(GAS)とGoogleスプレッドシート、Google フォームで複数人で共有できる家計簿を作ってみたので、解説します.ここでは,この家計簿システムを「GAS家計簿」と呼ぶことにします.

GAS家計簿のメリット・デメリット

GAS家計簿のメリット

・複数人で共有できる

URLを共有しておけば、誰でも記入可能です。

・スマホとPC両方からアクセスできる。

iPhoneであれば、「ホーム画面に追加」することで、直接アクセス可能です。

PCからでも操作できるので、大量に記入する項目があれば、PCで高速で記入することができる。

・ものを買ったその場で記入ができる。

 スマホからアクセスできるので、レジでの待ち時間などで記入できるので、領収書をためておいて、後で記入するなどの面倒がない。

・後日の精算が楽

 誰が何円払ったかが一目瞭然。関数を使えば誰に何円渡せば割り勘になるかがわかりやすい。

・自分でカスタマイズ可能

項目の統計をとってグラフを作るなど、情報の可視化ができる。

自分たちの使いやすいデザインにも修正できる。

GAS家計簿のデメリット

・手入力が必要

アプリでは、レシートを写真で読み込めば家計簿に加えてくれるものや、クレカと連携して自動記入してくれるものもある。

・自分で作る手間がかかる

GAS家計簿の作り方

フォームの作成

Googleフォームで以下のようなアンケートフォームを作る

WHO?:支払い者

f:id:yukikitsune:20210220174705p:plain
f:id:yukikitsune:20210220174714p:plain

そののち,回答タブをひらき,「スプレッドシートの作成」をする.

f:id:yukikitsune:20210220174732p:plain

シートの構成をつくる

上で作成したスプレッドシートに対して,以下の構成を作ります。

記入シート(記入された項目を整理するシート)

ABC列:年月日

D列:WHO(誰が支払ったか?)

E列:支出項目(食費など)

F列:金額

G列:備考
J列:計算列(YYMM(WHO)(支出項目)(金額)).のちの月毎の項目整理で使う.

  式は「=A2&B2&D2&E2&F2」 などとしておく

f:id:yukikitsune:20210220172824p:plain

18_実(各月の値を集計するシート)

2018年の各月,各項目の支出金額(例なので7月分だけ記入)

例えば,I3セルの計算式は

「=sumif(‘記入シート’!$J:$J,$A$1&I$2&$A$3&$B3&”*”,’記入シート’!$F:$F)」

となっている.

(記入シートJ列の計算列の値と,各セルの情報が一致する項目のみ和をとる式)

f:id:yukikitsune:20210220173932p:plain

フォーム入力を家計簿シートに反映する

フォーム入力をトリガーとして,入力内容を「記入シート」に反映すコードを書きます。

まず、スプレッドシート上の、「拡張機能」から「Apps Script」を開きます。

新規に作られた「コード.gs」を開きます。

その中に、次のコードを書いて保存します。

function Input(e) {
  Logger.log(e.response())
  var time=e.namedValues["タイムスタンプ"];
  var InType=e.namedValues["支出項目"];
  var InMoney=e.namedValues["収入金額(円)"];
  var InPlus=e.namedValues["収入備考"];
  var OutType=e.namedValues["支出項目"];
  var OutMoney=e.namedValues["支出金額(円)"];
  var OutPlus=e.namedValues["支出備考"];
  
  var ssid = "********"; //スプレッドシートのID
  //https://docs.google.com/spreadsheets/d/*********/edit←この「*****」がID.
  var ss = SpreadsheetApp.openById(ssid);
  var sheet = ss.getSheetByName("記入シート");
  var LastRow=sheet.getLastRaw() // 最後の行に値を追加するため,最後の行をとってくる
  
  sheet.getRange(LastRow+1,1).setValue(time.getYear())
  sheet.getRange(LastRow+1,2).setValue(time.getMonth()+1)
  sheet.getRange(LastRow+1,3).setValue(InType)
  sheet.getRange(LastRow+1,4).setValue(InMoney)
  sheet.getRange(LastRow+1,5).setValue(OutType)
  sheet.getRange(LastRow+1,6).setValue(OutMoney)
  sheet.getRange(LastRow+1,7).setValue(InType+OutPlus)

}

これで基本的な作りはOKです。

フォーム・スプレッドシートのURLをブックマーク、ホーム画面に追加

すぐ使えるように、作成したアンケートフォーム、スプレッドシートのURLをブックマークしましょう。

スマホの場合は、ホーム画面に追加すると使いやすいと思います。

また、複数人で使う場合は、アクセス・編集権限の設定に注意してください。

まとめ

今日では、支払い形態が、現金、クレカ、口座振替など多様になっているため、普通の方法では夫婦の家計をつけるのが大変です。

GAS家計簿であれば、共通の家計簿をどこでもいつでもつけることができるので大変便利です。

現在、数年ほどこのGAS家計簿を使っていますが、非常に満足しています。

また便利な拡張例があれば追記したいと思います。

追記(2021/4/24)

GASでレシートなどの写真から金額を読み取るOCRのAPIもあるそうです。気が向けばやってみます。

コメント