スプレッドシートを「入力の中心」に据える

既存の業務フローを変えずに、スプレッドシートから請求書・納品書を自動作成する設計アプローチ

スプレッドシートGoogle Apps Script業務フロー自動化中小企業
読了時間: 6分

このトピックについて

中小企業にとって、スプレッドシートは最も馴染みのあるツールです。このプロジェクトでは、スプレッドシートを「受注管理の中心」として活用し、そこから請求書サービスへ自動的にデータを送る仕組みを構築しました。

新しいシステムを導入するとき、現場の抵抗が最も大きな障壁になります。だからこそ、すでに社内で使い慣れているスプレッドシートをそのまま活用することにしました。

なぜこの設計が重要なのか

新しい入力画面は学習コストが高い

新システムの導入でよくある失敗パターンは、「高機能な入力画面を作ったのに誰も使わない」というケースです。せっかく開発したシステムが使われなければ、投資は無駄になってしまいます。

専用システムの導入
学習コスト高い
現場の反応抵抗感が強く、旧来の方法に戻りがち
スプレッドシート活用
学習コストほぼゼロ
現場の反応いつも通りの操作で自動化の恩恵を受けられる

スプレッドシートの強み

  • 誰でも使える: Excel/スプレッドシートの操作は基本的なPCスキル
  • 柔軟性が高い: 列の追加や並び替えが自由
  • 視認性が良い: 一覧で全体を把握できる
  • 共同編集が可能: 複数人で同時に作業できる

設計の全体像

スプレッドシートに入力されたデータを、Google Apps Script(GAS)が読み取り、請求書サービスに自動送信する流れです。

システム構成
スプレッドシート(受注管理表)

1行 = 1商品として入力。伝票番号で複数行をグループ化

GAS: 選択行を読み取り
Google Apps Script

ヘッダー行から列名を取得 → 選択範囲を読み取り → 伝票番号でグループ化 → JSON化してPOST送信

HTTPS POST (JSON)
連携アプリ(クラウド)

請求書サービスAPI呼び出し → 結果を返却

複数行を1枚の伝票にまとめる工夫

受注データは商品ごとに1行で管理されていますが、実際の請求書は複数商品をまとめて1枚にする必要があります。

この課題を解決するために、伝票番号(invoice_number)でグループ化する仕組みを実装しました。

複数行のまとめ処理
選択範囲を読み取り

ユーザーが処理したい行を選択

伝票番号でグループ化

同じ伝票番号を持つ行を1つのグループにまとめる

グループごとにJSON化

各グループを1つの請求書データとして変換

請求書を作成

10行の明細があっても1枚の請求書として送信

結果のフィードバック

請求書の作成が成功したか、エラーになったかは、スプレッドシートの指定列に自動的に書き戻されます。

OK
意味正常に作成完了
次のアクション請求書番号も記録される
エラー
意味作成に失敗
次のアクションエラー内容を確認して修正
重複
意味すでに作成済み
次のアクション二重作成を防止(正常動作)

許可リストによる安全な処理

スプレッドシートには社内メモなど、請求書に含めたくない列が混じっていることがあります。そこで、許可リストにある列だけを処理する仕組みを導入しました。

許可リストの例

  • invoice_number - 伝票番号(グループ化のキー)
  • partner_code - 取引先コード
  • issue_date - 発行日
  • description - 商品名
  • quantity - 数量
  • unit_price - 単価

この設計で実現できること

運営側にとって

  • 導入コストを最小化: 新しいシステムの学習不要
  • 移行リスクを回避: 既存の業務フローを維持
  • 柔軟な対応: スプレッドシートの列を自由にカスタマイズ可能

現場担当者にとって

  • いつも通りの操作: スプレッドシートに入力するだけ
  • すぐに結果を確認: ステータスがその場で表示される
  • エラー対応が容易: 問題のある行が一目でわかる

関連するトピック

この設計をベースに、さらに以下の機能を実装しています。

関連記事