しごと自動化レシピ

WORK RECIPE GAS

経費台帳を部門別に集計して別シートへ出す

部門と整数金額の経費データを一括で読み込み、部門別の合計表を作ります。空の部門や文字列金額は処理を止め、出力前に入力の不備を把握できる構成です。

実行確認の記録なし

公式資料を参照して構成した手順です。本記事の操作・コードの実行は未確認です。小さな入力例で期待結果を確かめてから利用してください。

できあがるもの

部門集計には営業1500・制作800の2明細と見出しができ、合計2300です。経費の元行は残り、不正な型がある場合は集計表を生成しません。

始める前に

  • ブラウザ版Googleスプレッドシートの編集権限と紐付きApps Script
  • コピーした検証用ファイルで実行。Apps ScriptはV8ランタイムを利用
  • 「経費」はA列部門・B列金額の2列、1000行以内、金額は安全な整数
入力例

経費!A1:B4は「部門,金額」「営業,1200」「制作,800」「営業,300」。出力先「部門集計」は未作成にします。

手順

  1. 検証用ファイルの経費にサンプルを入力します。金額に通貨記号を文字として含めず、1200のような数値を設定してください。
  2. 以下をスクリプトへ貼り付けて保存します。独立した例なので、ほかの記事の同名関数があるプロジェクトには混ぜません。 /** @OnlyCurrentDoc */ function summarize() { const ss=SpreadsheetApp.getActive(), s=ss.getSheetByName('経費'); if(!s || ss.getSheetByName('部門集計')) throw Error('シートを確認'); const n=s.getLastRow(); if(n<2 || n>1000 || s.getLastColumn()!==2) throw Error('2列・1〜999明細が必要'); const totals=new Map(); for(const [d,v] of s.getRange(2,1,n-1,2).getValues()) { if(typeof d!=='string' || !d.trim() || !Number.isSafeInteger(v)) throw Error('入力不正'); const t=(totals.get(d)||0)+v; if(!Number.isSafeInteger(t)) throw Error('合計が範囲外'); totals.set(d,t); } const out=[['部門','合計'],...Array.from(totals,([d,v])=>["'"+d,v])]; ss.insertSheet('部門集計').getRange(1,1,out.length,2).setValues(out); }
  3. summarizeを手動実行して、初回の対象ファイルへの権限を確認します。部門集計が新規作成され、営業1500と制作800が表示されるか確認します。
  4. 別の検証コピーで金額を「未定」という文字に置き換え、出力前に入力不正で停止するか確認します。エラーのまま本番集計に使わず、原本を照合して修正します。

期待結果と照合する

部門集計には営業1500・制作800の2明細と見出しができ、合計2300です。経費の元行は残り、不正な型がある場合は集計表を生成しません。

まずこの入力例で確認し、件数や値が一致しているかを見ます。完了表示だけで判断せず、重複・空欄・対象外データも残っていないか確認してください。

うまくいかないとき

  • 部門名の空白や略称は自動統一しません。完全に同じ文字列だけをまとめます。
  • 小数の金額は拒否します。小数を扱う会計では通貨の最小単位への変換規則を先に設計します。

止める・元に戻す

部門集計だけを削除します。コードを消し、検証用に変更した経費が残っていないか元サンプルと照合します。

公式資料・対応範囲

参照日:2026-10-17。公式資料の一般的な機能説明と、本記事固有の入力例の実行検証は別です。実務での短縮時間や効果は未計測です。

同じツールで試す

GASの記事一覧へ →