このトピックについて
中小企業にとって、スプレッドシートは最も馴染みのあるツールです。このプロジェクトでは、スプレッドシートを「受注管理の中心」として活用し、そこから請求書サービスへ自動的にデータを送る仕組みを構築しました。
新しいシステムを導入するとき、現場の抵抗が最も大きな障壁になります。だからこそ、すでに社内で使い慣れているスプレッドシートをそのまま活用することにしました。
なぜこの設計が重要なのか
新しい入力画面は学習コストが高い
新システムの導入でよくある失敗パターンは、「高機能な入力画面を作ったのに誰も使わない」というケースです。せっかく開発したシステムが使われなければ、投資は無駄になってしまいます。
| アプローチ | 学習コスト | 現場の反応 |
|---|---|---|
| 専用システムの導入 | 高い | 抵抗感が強く、旧来の方法に戻りがち |
| スプレッドシート活用 | ほぼゼロ | いつも通りの操作で自動化の恩恵を受けられる |
スプレッドシートの強み
- 誰でも使える: Excel/スプレッドシートの操作は基本的なPCスキル
- 柔軟性が高い: 列の追加や並び替えが自由
- 視認性が良い: 一覧で全体を把握できる
- 共同編集が可能: 複数人で同時に作業できる
設計の全体像
スプレッドシートに入力されたデータを、Google Apps Script(GAS)が読み取り、請求書サービスに自動送信する流れです。
1行 = 1商品として入力。伝票番号で複数行をグループ化
ヘッダー行から列名を取得 → 選択範囲を読み取り → 伝票番号でグループ化 → JSON化してPOST送信
請求書サービスAPI呼び出し → 結果を返却
複数行を1枚の伝票にまとめる工夫
受注データは商品ごとに1行で管理されていますが、実際の請求書は複数商品をまとめて1枚にする必要があります。
この課題を解決するために、伝票番号(invoice_number)でグループ化する仕組みを実装しました。
ユーザーが処理したい行を選択
同じ伝票番号を持つ行を1つのグループにまとめる
各グループを1つの請求書データとして変換
10行の明細があっても1枚の請求書として送信
結果のフィードバック
請求書の作成が成功したか、エラーになったかは、スプレッドシートの指定列に自動的に書き戻されます。
| ステータス | 意味 | 次のアクション |
|---|---|---|
| OK | 正常に作成完了 | 請求書番号も記録される |
| エラー | 作成に失敗 | エラー内容を確認して修正 |
| 重複 | すでに作成済み | 二重作成を防止(正常動作) |
許可リストによる安全な処理
スプレッドシートには社内メモなど、請求書に含めたくない列が混じっていることがあります。そこで、許可リストにある列だけを処理する仕組みを導入しました。
ヘッダー行(1行目)から列名を読み取り、許可リストと照合します。許可されていない列は自動的に無視されるため、余計なデータが送信されることはありません。
許可リストの例
invoice_number- 伝票番号(グループ化のキー)partner_code- 取引先コードissue_date- 発行日description- 商品名quantity- 数量unit_price- 単価
この設計で実現できること
運営側にとって
- 導入コストを最小化: 新しいシステムの学習不要
- 移行リスクを回避: 既存の業務フローを維持
- 柔軟な対応: スプレッドシートの列を自由にカスタマイズ可能
現場担当者にとって
- いつも通りの操作: スプレッドシートに入力するだけ
- すぐに結果を確認: ステータスがその場で表示される
- エラー対応が容易: 問題のある行が一目でわかる
関連するトピック
この設計をベースに、さらに以下の機能を実装しています。