E制作室 納品サンプル 業務自動化。登場する会社名・データはすべて架空のものです。

Deliverable Sample

ご購入いただくと、
この一式が届きます。

「自動化を頼んだけれど、結局よく分からないものが届いた」を防ぐため、当方では毎回この4点をセットで納品しています。架空の案件を例に、実際の納品物の構成をご覧いただけます。

今回の架空案件

ご相談内容を、そのまま自動化の要件に翻訳するところから始めます。

ご相談者雑貨の小売業(従業員6名・IT担当なし)
現在の作業毎朝、取引先3社から届くメールのCSVを開き、Excelに貼り付けて商品コードごとに集計。結果を店長へメールで報告している。
所要時間毎日およそ35分(月あたり約12時間)
環境Google Workspace(スプレッドシート・Gmail)
ご要望朝出社したら、集計が終わっている状態にしたい

01仕様書(着手前にご確認いただきます)

開発に入る前に、この1枚で認識を合わせます。ここでズレを潰すため、完成後の「思っていたのと違う」が起きません。

目的毎朝の集計・報告作業をゼロにする
起動タイミング毎朝7:00に自動実行(時刻は変更可能)
処理の流れ 1. Gmailから前日22時以降の対象メールを検索
2. 添付CSVを取得し、文字コードを判定して読み込み
3. 商品コード単位で数量・金額を合計
4. スプレッドシートの当日シートに書き出し
5. 集計結果を本文にしたメールを店長へ送信
異常時の動作メールが1通も届いていない、またはCSVの列構成が想定と違う場合は、処理を中断し「なぜ止まったか」を管理者へ通知する(誤った数字を報告しないことを最優先とする)
対象外取引先3社以外のフォーマット、手書き伝票の読み取り
ここが重要です 「異常時にどう振る舞うか」を先に決めておかないと、自動化は数字を静かに間違えます。当方は必ず「止めて知らせる」設計にします。

02ツール本体(Google Apps Script)

実際に納品するコードの一部です。コメントを日本語で残すため、将来ほかの方が引き継ぐこともできます。

/**
 * 毎朝7時に自動実行される集計処理
 * 取引先3社のCSVを取り込み、商品コード単位で集計して報告メールを送る
 */
function dailyAggregate() {
  const cfg = getConfig_();                    // 設定シートから読み込む
  const files = fetchCsvFromGmail_(cfg);       // 1. 添付CSVを取得

  // メールが届いていなければ、集計せずに管理者へ通知して終了
  if (files.length === 0) {
    notifyAdmin_('CSVが1件も見つかりませんでした', cfg);
    return;
  }

  const rows = [];
  for (const f of files) {
    const parsed = parseCsv_(f);               // 2. 文字コードを判定して読込
    if (!validateColumns_(parsed, cfg)) {      // 列構成が想定と違えば中断
      notifyAdmin_(`列構成が想定と異なります: ${f.getName()}`, cfg);
      return;
    }
    rows.push(...parsed);
  }

  const summary = sumByProductCode_(rows);     // 3. 商品コード単位で集計
  writeToSheet_(summary, cfg);                 // 4. 当日シートへ書き出し
  sendReportMail_(summary, cfg);               // 5. 店長へ報告メール
}
設定はコードの外に置きます 取引先の差出人アドレス、送信先、実行時刻などは「設定シート」側にあります。取引先が増えても、シートに1行足すだけで対応できます。

03テスト実行の証跡納品前に必ず実施

「動くはずです」ではなく「動いた記録」をお渡しします。正常系だけでなく、わざと異常を起こした試験も行います。

[2026-08-09 07:00:02] dailyAggregate 開始 [2026-08-09 07:00:03] Gmail検索: 対象メール 3件 を検出 [2026-08-09 07:00:05] CSV読込: 甲社_0809.csv (412行 / UTF-8) [2026-08-09 07:00:06] CSV読込: 乙社_0809.csv (218行 / Shift_JIS) [2026-08-09 07:00:07] CSV読込: 丙社_0809.csv (95行 / UTF-8) [2026-08-09 07:00:07] 列構成チェック: 3件すべて OK [2026-08-09 07:00:09] 集計完了: 商品コード 147種 / 合計 725行 [2026-08-09 07:00:11] シート書込: 「集計_2026-08-09」を作成 [2026-08-09 07:00:12] 報告メール送信: tencho@example.com [2026-08-09 07:00:12] 正常終了(所要 10.4秒)

異常系テスト(わざとエラーを起こして確認)

[試験2] CSVの列名を1つ変更して実行 [2026-08-09 07:12:04] 列構成チェック: NG("数量" 列が見つかりません) [2026-08-09 07:12:04] 集計を中断し、管理者へ通知メールを送信 [2026-08-09 07:12:05] シートへの書き込みなし(誤った数字を残さない) [試験3] メールが1通も届いていない状態で実行 [2026-08-09 07:20:01] Gmail検索: 対象メール 0件 [2026-08-09 07:20:01] 「CSVが届いていません」と管理者へ通知して終了

この2つの試験によって、「気づかないうちに間違った数字が報告される」事態を防げていることを確認できます。

04操作手順書(非エンジニアの方向け)

専門用語を使わず、実際の画面に沿って書きます。納品後にご自身で調整できる状態までお渡しします。

目次(実際の納品物は画像付きPDF・全8ページ)

  1. この仕組みが毎朝やっていること(図解1枚)
  2. 実行時刻を変えたいとき(設定シートの書き換え手順)
  3. 取引先が増えたとき(1行追加するだけの手順)
  4. 報告メールの宛先を変えたいとき
  5. 「エラー通知」が届いたときの確認手順
  6. しばらく止めたいとき、再開したいとき
  7. 過去の集計結果を見返す方法
  8. 困ったときの連絡先と、対応範囲
納品後2週間は無償対応 初期不良として無償で対応します。「思ったように動かない」も遠慮なくご連絡ください。

この案件での変化

数値は本サンプルの前提条件(毎日35分の作業)から算出した架空の試算です。実際の効果はご依頼内容により異なります。

導入前

35分 / 日

毎朝の手作業。月あたり約12時間。担当者が休むと集計が止まる。

導入後

0分 / 日

出社時には完了済み。担当者不在でも動き、異常時のみ通知が届く。