57h/月削減時間を実現
3名×20h → 1名×3h/月の劇的改善
導入:背景と課題
月末の帳票生成→差し込みメール送信が3名×20h。転記ミス/宛先ミスの心理的負担、進捗の不可視化が大きな課題となっていました。
要件定義
業務要件
- 帳票テンプレ統一
- 送信前チェックの強制
- ログ保存
- 再送フロー
非機能要件
- 最小権限(サービスアカウント)
- 共有ドライブ隔離
- 監査ログ
- 障害通知
As-Is可視化→To-Be設計
- データフロー:入力(CSV/シート)→テンプレ生成→PDF化→メールAPI
- RACI・SLA:作成・承認・送信・監査の役割/期限の明文化
実装
データ設計
master_recipients
(宛先/部署/権限)jobs
(対象、件名、期日、担当)- 命名規則:
YYYYMM_帳票名_部署_氏名.pdf
スクリプト構成
01_prepare
:データ整形02_generate
:テンプレ→PDF03_send
:差し込み送信+バリデーション(件名/添付/宛先)04_log
:実績・失敗ログ/リトライ05_alert
:失敗時メール/Chat通知
送信前チェックの強制(擬似コード)
if (!to || !subject || !attachment) throw new Error("Missing fields");
if (!ALLOW_DOMAINS.some(d => to.endsWith(d))) throw new Error("Domain not allowed");
GmailApp.sendEmail(to, subject, body, {attachments:[pdf], name:"Ops Bot"});
定着
- 1枚マニュアル+チェックリスト+5分動画
- 失敗事例のナレッジ化、月次棚卸しで改善点抽出
実現した効果
- 3名×20h→1名×3h/月(▲57h/月)
- 誤送信0%継続
- リードタイム▲85%
再現のコツ
- “送る前に止める”検証をコードに埋め込む
- ログはダッシュボード/通知へ。人が監視しなくてよい形に
よくある質問(FAQ)
Q. 個人アカウントで動かして良い?
A. 非推奨。サービスアカウント+共有ドライブで監査可能性を確保してください。
Q. 既存RPAとの使い分けは?
A. 小粒で頻出の表計算×メール領域はGASが速い。大規模はRPA/ワークフローで。