グーグルスプレットシートとGAS(Google Apps Script)をつかった簡単家計簿作成
今回はグーグルスプレットシートとGAS(Google Apps Script)をつかった簡単家計簿のつくり方について投稿します。
ちょっとしたプログラミングが必要ですが、自作に挑戦してはいかがでしょうか?
グーグルスプレットシートとは
グーグルスプレットシートは、Excelに類似した表計算ソフトです。Google社が提供しています。
グーグルが提供しているため、グーグルのアカウントがあれば無料で利用することができます。
スマホでも利用できるため、利便性に優れています。
GAS(Google Apps Script)とは
GASはグーグルが提供しているプログラミング言語です。JavaScriptのような表記でWEB上で動作することができます。
グーグルスプレットシートの使い方
Chromeブラウザを起動し、右上のGoogle アプリ、プレッドシートの順に選択をします。
選択したら空白のスプレッドシートを選択します。
スプレットシートが表示されたら、左下の「+」ボタンを押下してシートを追加します。追加後は、シート名を「メイン」と「1月」に変更します。
月の家計簿シート作成
シートを作成後「1月」のシートを選択します。選択後にその月で使った金額を入力します。
ここでは「B列」の「3行」から表を作成します。左から「日付」、「カテゴリ」、「クレジット」、「店名」、「金額」を設定します。
カテゴリは後で集計に使用します。ここでは、「食費」と「カフェ」としています。
重要な項目は、「カテゴリ」と「金額」です。この2つは必須項目なので必ず入力してください。
月が替わったらシートを増やしてください。
メインシートの作成
メインのシートの内容を作成します。
列に「カテゴリ」、行に「年月」を記載します。
カテゴリを増やしたい場合は手動で追加してください。
メインのシートは値の設定は行わず、各月単位でカテゴリ毎の集計を算出します。
GASのコーディング
月の内容を集計するプログラムをコーディングします。
「ツール」の「スクリプトエディタ」を選択してスクリプトエディタを起動します。
以下のような画面が表示されます。
コードの内容は以下の通りです。
function mounthSummary() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var month_array = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'];
for (var i = 0; i < month_array.length; i++) {
var category_array = {}
// カテゴリ作成
var summary_sheet = sheet.getSheetByName('メイン');
var summary_last_row = summary_sheet.getLastRow();
for (var k = 4; k <= summary_last_row; k++) {
category_array[summary_sheet.getRange(k, 2).getValue()] = 0;
}
var active_sheet = sheet.getSheetByName(month_array[i]);
if (active_sheet) {
var last_row = active_sheet.getLastRow();
// 読み込み
for (var j = 3; j <= last_row; j++) {
if (category_array[active_sheet.getRange(j, 3).getValue()] !== undefined) {
category_array[active_sheet.getRange(j, 3).getValue()] += active_sheet.getRange(j, 6).getValue();
}
}
// 書き出し
for (var k = 4; k <= summary_last_row; k++) {
Logger.log(summary_sheet.getRange(k, 2).getValue());
if (category_array[summary_sheet.getRange(k, 2).getValue()] !== undefined) {
summary_sheet.getRange(k, i + 3).setValue(category_array[summary_sheet.getRange(k, 2).getValue()]);
}
}
}
};
}
var sheet = SpreadsheetApp.getActiveSpreadsheet();
スプレットシートのオブジェクトを取得します。
var month_array = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'];
12ヶ月分のシート名を配列に格納します。
for (var i = 0; i < month_array.length; i++) {
・・・
}
上記で作成した年月のシート数処理を繰り返します。
var summary_sheet = sheet.getSheetByName('メイン');
「メイン」のシートのオブジェクトを格納します。
var summary_last_row = summary_sheet.getLastRow();
月のシートの最後の行数を取得します。
for (var k = 4; k <= summary_last_row; k++) {
category_array[summary_sheet.getRange(k, 2).getValue()] = 0;
}
メインのカテゴリを全行調べて配列に格納します。
var active_sheet = sheet.getSheetByName(month_array[i]);
if (active_sheet) {
・・・
}
月のシートをアクティブにします。シートが存在している場合は、処理を継続してシートが存在しない場合は次の月を処理します。
var last_row = active_sheet.getLastRow();
// 読み込み
for (var j = 3; j <= last_row; j++) {
if (category_array[active_sheet.getRange(j, 3).getValue()] !== undefined) {
category_array[active_sheet.getRange(j, 3).getValue()] += active_sheet.getRange(j, 6).getValue();
}
}
月のシート最終行を取得し繰り返します。月のシートのカテゴリとマスターで取得したカテゴリの配列の値が存在する(カテゴリがマッチする)場合に金額を足しこみをおこないます。
// 書き出し
for (var k = 4; k <= summary_last_row; k++) {
Logger.log(summary_sheet.getRange(k, 2).getValue());
if (category_array[summary_sheet.getRange(k, 2).getValue()] !== undefined) {
summary_sheet.getRange(k, i + 3).setValue(category_array[summary_sheet.getRange(k, 2).getValue()]);
}
}
最後に書き込みを行います。
実行
実行ボタンを押下してスクリプトを実行します。実行すると以下のように結果がマスタのシートに書き込まれます。
まとめ
グーグルスプレットシートとGAS(Google Apps Script)をつかった簡単家計簿について紹介しました。
JavaScriptのような記述ができ、ソースコードもそんなに複雑ではないと思います。
応用もできるとおもいますので試してみてはいかがでしょうか?
0 件のコメント:
コメントを投稿
コメントをお待ちしています。