MENU

【2026年版】確定申告×スプレッドシート自動化|GASで経費管理を効率化する方法

【2026年版】確定申告×スプレッドシート自動化|GASで経費管理を効率化する方法

📅 2026年の確定申告期間: 2月16日(月)〜 3月15日(日)

>

まだ準備ができていない方も大丈夫。この記事のテンプレートとGASコードを使えば、今からでも間に合います。

「確定申告の時期になると、毎年レシートの山と格闘している…」

「経費の集計に何時間もかかって、本業に集中できない…」

「会計ソフトは便利だけど、月額料金がもったいない…」

こんな悩みを抱えているフリーランスや副業会社員の方は多いのではないでしょうか。

実は、GoogleスプレッドシートとGAS(Google Apps Script)を組み合わせることで、経費管理から確定申告の準備まで無料で自動化できます。


目次

確定申告の悩みと解決策

フリーランス・副業の経費管理あるある

悩み1: レシートがたまる一方

「月末にまとめて入力しよう」と思っていたら、いつの間にか財布がレシートでパンパンに。何の支出かわからないものも…。

悩み2: 集計に時間がかかりすぎる

1年分の経費を手作業で集計すると、丸1日以上かかることも。電卓を叩いて、科目ごとに分けて、合計を出して…。

悩み3: 会計ソフトのコストが気になる

freeeやマネーフォワードは便利だけど、年間1〜2万円のコストがかかる。副業で売上がまだ少ない段階では負担になります。

スプレッドシート×GASなら無料で解決

項目 会計ソフト スプレッドシート×GAS
月額費用 1,000〜2,000円 無料
カスタマイズ 制限あり 自由自在
データ所有 サービス依存 自分で管理
学習コスト 低〜中 中(本記事でカバー)
他ツール連携 限定的 GASで自由に連携可

会計ソフトほど高機能ではありませんが、年間売上300万円以下の個人事業主や副業会社員には十分な機能を無料で実現できます。


経費管理テンプレートの作り方

ステップ1: 基本シートの構成

以下の3つのシートを作成します。

  • 経費入力シート: 日々の経費を入力
  • 集計シート: 勘定科目別・月別の自動集計
  • マスタシート: 勘定科目や取引先の一覧

ステップ2: 経費入力シートの設計

経費入力シートには、以下の列を設定します。

A列 B列 C列 D列 E列 F列 G列
日付 勘定科目 取引先/内容 金額 支払方法 メモ レシート有無

入力例:

日付 勘定科目 取引先/内容 金額 支払方法 メモ レシート
2026/1/5 消耗品費 Amazon – USBケーブル 1,280 クレジット 仕事用PC周辺機器
2026/1/8 通信費 さくらインターネット 1,571 クレジット サーバー代1月分
2026/1/10 旅費交通費 Suica – 渋谷→新宿 200 電子マネー 打ち合わせ移動
2026/1/15 新聞図書費 Kindle – ビジネス書 1,650 クレジット スキルアップ

ポイント:

  • 勘定科目はプルダウンで選択(入力ミス防止)
  • 日付は必ず入力(月別集計に必要)
  • レシート有無を記録(税務調査対策)

セル設定の具体例:


【経費入力シート - セル設定】

A1: "日付"        → 書式: 日付(yyyy/mm/dd)
B1: "勘定科目"    → データの入力規則: マスタ!A:A からリスト
C1: "取引先/内容" → 書式: テキスト
D1: "金額"        → 書式: 数値(カンマ区切り、円記号なし)
E1: "支払方法"    → データの入力規則: "現金,クレジット,銀行振込,電子マネー"
F1: "メモ"        → 書式: テキスト
G1: "レシート"    → データの入力規則: "○,−"

【便利な数式】
H1: "月"          → =IF(A2="","",TEXT(A2,"yyyy-mm"))
I1: "年間累計"    → =SUMIF(B:B,B2,D:D)

条件付き書式で視覚化:

  • 金額1万円以上: 黄色ハイライト
  • レシートなし: 赤色の警告表示

ステップ3: 勘定科目マスタの作成

「マスタ」シートに、よく使う勘定科目を登録します。

フリーランス・副業でよく使う勘定科目:

勘定科目 内容例
消耗品費 文房具、PCパーツ、10万円未満の備品
通信費 インターネット、携帯電話、サーバー代
旅費交通費 電車、タクシー、出張費
新聞図書費 書籍、電子書籍、有料記事
広告宣伝費 SNS広告、名刺、チラシ
外注費 デザイン依頼、翻訳依頼
接待交際費 取引先との飲食(按分注意)
地代家賃 事務所、コワーキングスペース
水道光熱費 電気、ガス(按分注意)
雑費 上記に該当しないもの

プルダウン設定方法:

  • マスタシートのA列に勘定科目を入力
  • 経費入力シートのB列を選択
  • 「データ」→「データの入力規則」
  • 条件を「リストを範囲で指定」→マスタのA列を選択

GASで自動集計する方法

基本の集計コード

以下のGASコードをコピペするだけで、勘定科目別・月別の集計が自動化できます。


/**
 * ============================================================
 * 経費自動集計スクリプト(2026年確定申告対応版)
 * ============================================================
 *
 * 【概要】
 * 経費入力シートのデータを自動で集計し、勘定科目別・月別の
 * サマリーを作成します。確定申告の準備が大幅に楽になります。
 *
 * 【必要なシート】
 * 1. 経費入力  - 日々の経費を入力するシート
 * 2. 集計      - 自動集計結果が出力されるシート
 * 3. マスタ    - 勘定科目一覧(プルダウン用)
 *
 * 【使い方】
 * 1. このコードをApps Scriptエディタに貼り付け
 * 2. スプレッドシートを再読み込み
 * 3. メニュー「経費管理」→「集計を実行」
 * ============================================================
 */

/**
 * 集計を実行するメイン関数
 * メニューから「集計を実行」を選ぶとこの関数が動きます
 */
function aggregateExpenses() {
  // スプレッドシートを取得
  const ss = SpreadsheetApp.getActiveSpreadsheet();

  // シート名は必ず「経費入力」「集計」にしてください
  const inputSheet = ss.getSheetByName('経費入力');
  const summarySheet = ss.getSheetByName('集計');

  // シートが存在しない場合のエラーチェック
  if (!inputSheet || !summarySheet) {
    SpreadsheetApp.getUi().alert(
      'エラー: 「経費入力」または「集計」シートが見つかりません。\n' +
      'シート名を確認してください。'
    );
    return;
  }

  // 経費データを取得(ヘッダー除く)
  const data = inputSheet.getDataRange().getValues();
  const expenses = data.slice(1); // 1行目はヘッダー

  // 集計用オブジェクト
  const summary = {};
  const monthlyTotal = {};

  // 経費を集計
  expenses.forEach(row => {
    const date = row[0];
    const category = row[1];
    const amount = row[3];

    if (!date || !category || !amount) return; // 空行スキップ

    // 月を取得(YYYY-MM形式)
    const month = Utilities.formatDate(new Date(date), 'Asia/Tokyo', 'yyyy-MM');

    // 勘定科目別集計
    if (!summary[category]) {
      summary[category] = 0;
    }
    summary[category] += amount;

    // 月別集計
    if (!monthlyTotal[month]) {
      monthlyTotal[month] = 0;
    }
    monthlyTotal[month] += amount;
  });

  // 集計シートをクリア(ヘッダー以外)
  const lastRow = summarySheet.getLastRow();
  if (lastRow > 1) {
    summarySheet.getRange(2, 1, lastRow - 1, 3).clearContent();
  }

  // 勘定科目別集計を出力
  let outputRow = 2;
  summarySheet.getRange(outputRow, 1).setValue('【勘定科目別】');
  outputRow++;

  Object.keys(summary).sort().forEach(category => {
    summarySheet.getRange(outputRow, 1, 1, 2).setValues([[category, summary[category]]]);
    outputRow++;
  });

  // 合計
  const grandTotal = Object.values(summary).reduce((a, b) => a + b, 0);
  summarySheet.getRange(outputRow, 1, 1, 2).setValues([['【合計】', grandTotal]]);
  outputRow += 2;

  // 月別集計を出力
  summarySheet.getRange(outputRow, 1).setValue('【月別】');
  outputRow++;

  Object.keys(monthlyTotal).sort().forEach(month => {
    summarySheet.getRange(outputRow, 1, 1, 2).setValues([[month, monthlyTotal[month]]]);
    outputRow++;
  });

  // 完了メッセージ
  SpreadsheetApp.getUi().alert('集計が完了しました!');
}

/**
 * メニューに「経費集計」を追加
 */
function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu('経費管理')
    .addItem('集計を実行', 'aggregateExpenses')
    .addItem('月別レポート出力', 'generateMonthlyReport')
    .addToUi();
}

/**
 * 月別レポートをGoogleドキュメントに出力
 */
function generateMonthlyReport() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const inputSheet = ss.getSheetByName('経費入力');
  const data = inputSheet.getDataRange().getValues().slice(1);

  // 現在の年を取得
  const year = new Date().getFullYear();

  // 月ごとの集計
  const monthlyData = {};

  data.forEach(row => {
    const date = new Date(row[0]);
    if (date.getFullYear() !== year) return;

    const month = date.getMonth() + 1;
    const category = row[1];
    const amount = row[3];

    if (!monthlyData[month]) {
      monthlyData[month] = { total: 0, categories: {} };
    }
    monthlyData[month].total += amount;

    if (!monthlyData[month].categories[category]) {
      monthlyData[month].categories[category] = 0;
    }
    monthlyData[month].categories[category] += amount;
  });

  // レポート文字列を作成
  let report = `【${year}年 経費レポート】\n\n`;

  for (let m = 1; m <= 12; m++) {
    if (monthlyData[m]) {
      report += `■ ${m}月: ${monthlyData[m].total.toLocaleString()}円\n`;
      Object.keys(monthlyData[m].categories).forEach(cat => {
        report += `  ・${cat}: ${monthlyData[m].categories[cat].toLocaleString()}円\n`;
      });
      report += '\n';
    }
  }

  // 年間合計
  const yearTotal = Object.values(monthlyData).reduce((sum, m) => sum + m.total, 0);
  report += `【年間合計】${yearTotal.toLocaleString()}円\n`;

  // 結果をログに出力(またはドキュメントに保存)
  console.log(report);
  SpreadsheetApp.getUi().alert('レポートをログに出力しました。\n表示→ログで確認できます。');
}

使い方

  • スプレッドシートの「拡張機能」→「Apps Script」を開く
  • 上記コードを貼り付けて保存
  • スプレッドシートを再読み込み
  • メニューに経費管理が追加される
  • 「経費管理」→集計を実行で自動集計

自動実行トリガーの設定

毎月自動で集計したい場合は、トリガーを設定します。

  • Apps Scriptエディタで「トリガー」(時計アイコン)をクリック
  • トリガーを追加をクリック
  • 実行する関数: aggregateExpenses
  • イベントのソース: 「時間主導型」
  • 時間ベースのトリガー: 「月ベースのタイマー」
  • 日を選択: 1日、時刻: 「午前9時〜10時」

これで毎月1日に自動集計されます。


レシート管理・OCR連携のヒント

方法1: Googleドライブでレシート写真管理

  • Googleドライブに「レシート」フォルダを作成
  • スマホで撮影したレシートをアップロード
  • ファイル名を日付_金額_内容に統一(例: 20260115_1650_書籍)

方法2: Google KeepでOCR(文字認識)

Google Keepは画像内の文字を自動認識できます。

  • Google Keepにレシート写真を貼り付け
  • 画像をクリック→「画像のテキストを抽出」
  • 金額や日付がテキスト化される

方法3: LINE連携で即時記録(応用)

LINEでレシートを撮影し、GASで自動登録する仕組みも構築可能です。


【フロー】
レシート撮影 → LINE送信 → GAS受信 → スプレッドシートに登録


確定申告への活用

必要な書類の準備

スプレッドシートの集計データから、以下の書類を作成できます。

書類 用途 スプレッドシートからの出力
収支内訳書 白色申告 勘定科目別集計を転記
青色申告決算書 青色申告 勘定科目別集計を転記
経費帳 帳簿保存 経費入力シートをそのまま使用

e-Taxへの入力

集計シートの勘定科目別合計を、e-Taxの該当項目に入力するだけで完了です。


【e-Tax入力例】
消耗品費: 45,000円 → スプレッドシートの「消耗品費」合計を入力
通信費: 72,000円 → スプレッドシートの「通信費」合計を入力
...

まとめ

今回のポイント

  • 無料で経費管理を自動化できる
  • 勘定科目別・月別の自動集計で確定申告がラクに
  • GASのコードをコピペするだけで導入可能
  • レシート管理もGoogleドライブやKeepと連携可能

導入効果の目安

作業 手作業 自動化後
月次経費集計 2時間 5分
年間集計 1日 ワンクリック
確定申告準備 3日 数時間

注意点

  • 本テンプレートは簡易版です。複式簿記が必要な場合は会計ソフトを検討してください
  • 税務上の判断は税理士にご相談ください
  • レシートの原本保存は引き続き必要です(電子帳簿保存法対応の場合を除く)


今すぐ始めよう

確定申告シーズンを乗り越えるヒントになれば幸いです。

次のステップ

  • 今日: この記事のGASコードをスプレッドシートに設定
  • 今週中: 溜まっているレシートを入力
  • 2/15まで: 年間集計を完了させる


よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次