目標
①なるべくシンプル
②外出先でもタイムリーに入力できるように
③年月ごとにまとめたい
を目指して作成していきました。
作成過程でかなり試行錯誤してるんですが、すっとばして解決策だけ書いていこうと思います。
随時更新です。
外出先でも入力できるようにGoogleフォームで入力する家計簿
目標①、②を達成すべく、Googleフォームで家計簿の入力部分(?)を作っていきます。
レシートを見ながら、日付、金額を入力するという家計簿にしました。
なるべく入力作業をしたくないので、当日中なら日付は入力しなくていいようにしました。(ほぼ後日入力しているし、後でめんどくさいことになったのでやめた方がよかった、というのは後述…)
項目はざっくり。
項目によって質問を分岐させました。
(食費やお菓子は次に金額(セクション4(最後の質問))、
固定費は次に電気代、ガス代など内訳(セクション3)を選択してから金額、
その他は詳細(セクション2)を入力後、金額の入力に進むようにしました。)
食費の内訳(卵、牛乳などの製品名)は私は不要なので、まとめて食費!お菓子!という選択をして合計金額を入力します。
個人的には「目標①なるべくシンプル」「②外出先でもタイムリーに入力できるように」が達成できました。
Googleスプレッドシートに出力
ボタンひとつでスプレッドシートにしてくれる。ありがたい!(回答画面の右上にある緑のマークのところ押すだけ)
質問ごとに列が別れたスプレッドシートができた。
フォームに入力していくと自動で行が増えていく。便利〜
このスプレッドシートを「回答スプレッドシート」として以下話ていきます。
このままでは入力項目がただ出力されているだけなので、
しかも入力順(タイムスタンプ)なので、使用日順にしたい者にとってはまったくもって見にくい。
スプレッドシートを新しく作成してそっちで使いやすいように綺麗にまとめていきます。
そのために一手間をかけておきます。
回答スプシにて、レシート年月日の列をテキスト化しておきます。以下参照。
ここで上記に書いたように、「当日中なら日付は入力しなくていいようにした」ために余分な1列(空欄の場合タイムスタンプ記載の日付を引用してくるようにする列)が必要になりました。
新規スプレッドシートを作成
新規スプシを作成したら、
とりあえずA1セルに以下の関数を入れます。
=query(IMPORTRANGE("回答スプレッドシートのURL","フォームの回答!C:H"),"select* where Col1 like '"&Q1&"%'",true)
上記では、「回答スプシ」の「フォームの回答」というシートタブの、Q1セルにある文字列で始まるC列(Col1)の行を昇順でC列からH列まで抽出する式です。
「Col1」は、回答スプシの取得範囲の左から1列目ということなので、上の例だとC列から1行目、つまり回答スプシのC列のことになります。(取得範囲が「C:H」なので)
「true」は、「昇順」で並べる命令(?)ですが、降順にする方法も調べてみましたがわからず・・・今回は使用することがないので追求しません。
Q1セルにはシート名が記入されているのですが、これは
=SHEETname()
という式が入っています。
シート名を取得する方法ですが、
こちらを参考にさせていただきました。
このままGASで作成すれば問題ないです。記事を書いてくださりありがとうございます!
これで「目標③年月ごとにまとめたい」が達成できるようになりました。
新しい月になったときに自動でシートを作成させる
こちらの記事を参考にさせていただきました。ありがとうございます!