【GAS実践】レポート自動生成とは?Google Apps Scriptで日次・月次レポートを完全自動化する方法
旅行中でも毎日の売上状況や問い合わせ件数を自動で確認できたら便利ですよね。 実はGoogle Apps Script(GAS)を使うと、そんな仕組みを無料で構築できます。
今回紹介する「レポート自動生成」は、GAS学習の集大成とも言えるテーマです。
配列処理、JSON操作、グルーピング、クロス集計、API連携、トリガー設定など、これまで学んできた知識をすべて組み合わせて作る仕組みだからです。
私自身も最初は単純なスプレッドシート操作から始めましたが、レポートを自動化した瞬間に「これはもうスクリプトではなく業務システムだ」と感じました。
この記事では、GASによるレポート自動生成の基本から実務レベルの設計方法まで詳しく解説していきます。
レポート自動生成とは?GASでできること
レポート自動生成とは、データを収集し、集計・分析し、人が見やすい形式へ変換して自動配布する仕組みのことです。
代表的なレポート例
- 売上レポート(日次・週次・月次)
- KPIダッシュボード
- メール送信履歴レポート
- 問い合わせ件数集計
- アクセスログ分析
- 外部API連携レポート
データ → 分析 → レポート化 → 自動配布
この流れを自動化するのがレポート自動生成です。
GASレポート自動生成の全体アーキテクチャ
実務で利用されるレポートシステムは次の流れで構成されています。
① データ取得
↓
② JSON整形
↓
③ 集計処理
↓
④ レポート整形
↓
⑤ 出力
↓
⑥ 自動実行
Google Apps Scriptはこのすべてを1つのスクリプトで実現できます。
ステップ① データ取得
まずは集計対象となるデータを取得します。
スプレッドシートから取得
const data = sheet.getDataRange().getValues();
APIから取得
const res = UrlFetchApp.fetch(API_URL);
const data = JSON.parse(res.getContentText());
実務で利用されるデータソースは次のようなものがあります。
- Googleスプレッドシート
- Gmail
- Google Drive
- 社内システムAPI
- 外部サービスAPI
ステップ② JSON整形(データ加工の基盤)
取得したデータはそのままでは扱いづらいため、まずJSON形式へ整形します。
const json = data.slice(1).map(row => ({
name: row[0],
sales: Number(row[1]),
dept: row[2]
}));
この工程は家づくりでいう基礎工事です。 ここを丁寧に作ることで後の集計処理が圧倒的に楽になります。
ステップ③ 集計処理(Business Logic)
レポートの価値を決める最重要ポイントです。
部署別売上集計
const grouped = json.reduce((acc, item) => {
if (!acc[item.dept]) {
acc[item.dept] = 0;
}
acc[item.dept] += item.sales;
return acc;
}, {});
集計結果の例
営業部:300,000円
開発部:500,000円
総務部:120,000円
クロス集計
pivot[dept][user] += sales;
部署別・担当者別など多角的な分析が可能になります。
ステップ④ レポート形式へ整形
集計したデータを人が読める形へ変換します。
const output = Object.entries(grouped);
例えば次のようなテーブル形式になります。
[
["部署", "売上"],
["営業", 300000],
["開発", 500000]
]
この工程によってデータが「情報」へ変わります。
ステップ⑤ レポート出力
スプレッドシート出力
sheet.getRange(
1,
1,
output.length,
2
).setValues(output);
Gmail送信
GmailApp.sendEmail(
"test@example.com",
"日次レポート",
"本日の売上:" + total
);
ファイル出力
DriveApp.createFile(
"report.txt",
JSON.stringify(output)
);
実務ではスプレッドシート出力とメール通知を組み合わせるケースが最も多く見られます。
ステップ⑥ トリガーで完全自動化
最後にトリガーを設定します。
function dailyReport() {
}
毎朝9時に実行する設定を行えば、出社前に自動でレポートが届く仕組みを構築できます。
旅行先でもスマホから結果を確認できるため、業務効率は大きく向上します。
GASレポート自動生成テンプレート(完成版)
function report() {
const sheet =
SpreadsheetApp
.getActiveSpreadsheet()
.getActiveSheet();
const data =
sheet.getDataRange().getValues();
const json =
data.slice(1).map(row => ({
dept: row[0],
user: row[1],
sales: Number(row[2])
}));
const grouped =
json.reduce((acc, item) => {
if (!acc[item.dept]) {
acc[item.dept] = 0;
}
acc[item.dept] += item.sales;
return acc;
}, {});
const output = [
["部署", "売上"]
];
Object.entries(grouped)
.forEach(([k, v]) => {
output.push([k, v]);
});
sheet
.getRange(
1,
5,
output.length,
2
)
.setValues(output);
GmailApp.sendEmail(
"test@example.com",
"日次レポート",
JSON.stringify(grouped)
);
}
ここまで作れれば、もはや単なるスクリプトではなく立派な業務システムです。
実務でよく作られるレポートの種類
日次レポート
- 売上集計
- KPI管理
- エラー件数
月次レポート
- 部門別集計
- 前年比較
- 推移分析
ログ分析レポート
- Gmail利用状況
- Driveアクセス履歴
- 作業ログ分析
API連携レポート
- ECサイト売上分析
- SNS分析
- 顧客管理システム連携
設計で重要な3つのポイント
① 層を分離する
データ取得
↓
処理ロジック
↓
出力
役割を混ぜないことが保守性向上の秘訣です。
② 冪等性を意識する
何度実行しても同じ結果になる設計を心掛けましょう。
③ 関数化して再利用する
集計処理や出力処理は関数として切り出すことで管理しやすくなります。
パフォーマンス改善のコツ
良い例
一括取得
↓
一括処理
↓
一括出力
悪い例
ループ内でAPI実行
ループ内でシート更新
大量データを扱う場合、この違いだけで処理時間が数十倍変わることもあります。
まとめ|レポート自動生成はGASの完成形
レポート自動生成の本質は、
データ → 集計 → 可視化 → 配布
という業務フローそのものを自動化することです。
GASを活用すれば、
- データ取得
- JSON整形
- 集計処理
- レポート作成
- メール通知
- 定期実行
これらをすべて自動化できます。
ここまで到達するとGASは単なるスクリプトではありません。
「ミニ業務システムを構築するための開発ツール」
毎日繰り返している集計作業や報告業務を自動化し、本当に価値のある仕事へ時間を使えるようになる。それこそがレポート自動生成最大の魅力です。







0 件のコメント:
コメントを投稿