【簡単】Googleスプレッドシートでつくる現金出納帳

がいの部屋

Google スプレッドシートで「現金出納帳」を管理するためのシンプルな Google Apps Script(GAS) のコードを以下にご提供します。

以下の構成では、入金・出金の登録や自動残高計算を行う簡単なシステムになります。

💡スプレッドシート構成(例)

日付内容入金出金残高
2025/07/01売上10,00010,000
2025/07/02仕入れ3,0007,000

✅ GASコード:入金・出金の記録と残高の自動計算

function onEdit(e) {
  const sheet = e.source.getActiveSheet();
  const editedRow = e.range.getRow();
  const editedCol = e.range.getColumn();

  // 「現金出納帳」という名前のシートのみに対応
  if (sheet.getName() !== '現金出納帳') return;

  // 入金列または出金列に変更があった場合のみ実行
  if (editedCol !== 3 && editedCol !== 4) return;

  const lastRow = sheet.getLastRow();

  for (let row = 2; row <= lastRow; row++) {
    const income = Number(sheet.getRange(row, 3).getValue()) || 0;
    const expense = Number(sheet.getRange(row, 4).getValue()) || 0;

    let prevBalance = 0;
    if (row > 2) {
      prevBalance = Number(sheet.getRange(row - 1, 5).getValue()) || 0;
    }

    const balance = prevBalance + income - expense;
    sheet.getRange(row, 5).setValue(balance);
  }
}

✍️ 手順

Google スプレッドシートを作成し、シート名を「現金出納帳」にします。

1行目に以下の見出しを入力してください:

A1: 日付, B1: 内容, C1: 入金, D1: 出金, E1: 残高

メニューから「拡張機能」→「Apps Script」を開き、上記のコードを貼り付けて保存します。

スプレッドシートにデータ(入金または出金)を入力すると、自動的に残高が計算されます。

🔍 各部分の詳しい説明

function onEdit(e) {

  • 目的:スプレッドシートのセルが編集されたときに自動で呼び出される関数(onEditトリガー関数)。
  • e:編集イベントの情報(編集されたセルの場所や内容など)を含むオブジェクト。

const sheet = e.source.getActiveSheet();

  • 編集されたシート全体の情報(Sheetオブジェクト)を取得します。

const editedRow = e.range.getRow();

const editedCol = e.range.getColumn();

  • 編集されたセルの「行番号」と「列番号」を取得しています。
    • 例えば、C3 を編集した場合 → editedRow = 3, editedCol = 3

if (sheet.getName() !== '現金出納帳') return;

  • 他のシートで編集された場合は処理をやめるという条件です。
  • このコードは「現金出納帳」という名前のシートにしか反応しません。

if (editedCol !== 3 && editedCol !== 4) return;

  • 入金列(3列目)または出金列(4列目)以外を編集しても処理しないようにしています。

const lastRow = sheet.getLastRow();

  • データが入っている一番下の行番号を取得します。
  • ループ処理で残高を計算するために必要です。

for (let row = 2; row <= lastRow; row++) {

  • 2行目(ヘッダーの次)から最後の行までループします。
  • 各行の入金・出金・残高を順に計算していきます。

const income = Number(sheet.getRange(row, 3).getValue()) || 0;

  • 指定行の入金セル(3列目)の値を取得し、数値に変換。
  • 空欄のときは 0 を使います(|| 0 の部分)。

const expense = Number(sheet.getRange(row, 4).getValue()) || 0;

  • 指定行の出金セル(4列目)の値を取得し、数値に変換。
  • 同様に空欄のときは 0 を使用。

let prevBalance = 0;

  • 前の行の残高を格納する変数を初期化。

if (row > 2) { ... }

  • 2行目(最初の取引行)のときは前の行がないので 0 を基準とします。
  • それ以降の行では、**前の行(row – 1)の残高(5列目)**を取得して使います。

const balance = prevBalance + income - expense;

  • 残高を計算する式です:

新しい残高 = 前の残高 + 入金 – 出金

sheet.getRange(row, 5).setValue(balance);

  • 計算した残高を現在の行の「5列目(残高列)」に書き込みます。

✅ このスクリプトでできること

  • 入金 or 出金欄に値を入力すると、自動で残高が更新されます。
  • 残高は常に前の行から継続して計算されます。
  • 過去の値を変更しても、全体の残高が再計算されます。

Copied title and URL