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:テンプレ→PDF
  • 03_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/ワークフローで。