これを作った背景と全体像
福祉施設の経理担当スタッフが毎月抱えていたある課題。Amazon Business で購入した物品の支払いが、JCBクレジットカードの明細に載っているはずなのに、どの注文がどの明細に対応するのか確認するだけで2〜3時間かかっていたのです。
Amazonの注文は商品ごとにバラバラに請求されることがあり、さらにポイント利用や分割発送があると金額が一致しない。そこにExcelの日付フォーマット崩れも絡んで、手作業での照合はとにかくストレスフルな作業でした。
解決策:Google スプレッドシート上で動くGASツールを、Claude(AI)と一緒にゼロから開発。 AmazonのCSVとクレカのCSVを貼り付けるだけで、3段階マッチングエンジンが自動照合。 一致したものは緑、未照合は黄色に色分けされ、商品名・発注者まで自動表示されます。
- Amazon Business の注文履歴CSVをそのままスプレッドシートに貼り付け
- JCBクレカ明細CSVも同様に貼り付け(2フォーマット自動判別)
- 「照合を実行」ボタン1つで完了。照合結果シートに自動まとめ
- 未照合の行は黄色表示、商品未着疑いはオレンジ警告で一目瞭然
開発の核心:3段階マッチングエンジン
このツールで最も複雑な課題が「金額が単純に一致しないケース」への対応でした。 通常の照合なら「注文の合計金額 = クレカ請求額」で済みますが、実務ではそうはいきません。
たとえば同じ注文番号で2個購入した商品が、Amazonの都合で1週間後に別々に発送されると、 クレカには「3,998円」ではなく「1,999円×2回」として請求されます。 これを漏らさず検出するために、3段階の照合ロジックを設計しました。
注文合計マッチング
注文全体の合計金額とクレカ請求額が一致するか確認。通常の注文はここで照合完了。
発送単位マッチング
①で未照合のケースに対して、発送グループごとの合計(AK列)とクレカ請求額を照合。分割発送を検出。
商品小計マッチング
②でも未照合の場合、個々の商品小計(AZ列)で照合するフォールバック。特殊なケースに対応。
重複マッチング防止の工夫:
②の「発送単位」と③の「商品小計」が同じ注文を二重カウントしないよう、
matchedOrderIds フラグと !item.shipmentTotal ガードを組み合わせて
②③を排他的に動作させています。AIとのペアプログラミングで発見した設計上の落とし穴でした。
- 日付照合は前後5日の許容幅(
DATE_TOLERANCE = 5)を設定 - 日付データがない行は金額のみで照合し「(日付不明)」と表示
- Excelの「#######」崩れ問題を検出してnull扱いにするparseDate関数を実装
- 購入台帳の利用者名は注文番号キーでルックアップして照合結果に自動挿入
導入効果と技術的見どころ
ツールの完成により、経理担当スタッフの月次照合作業が劇的に短縮されました。 同時に、AI(Claude)とのペアプログラミングでゼロから開発した経験から、 いくつかの技術的にチャレンジングだった実装も生まれました。
開発で最も印象に残っているのが、AIとのデバッグ作業です。Excelから貼り付けた日付が
「#######」という文字列のまま入ってしまう問題や、
getLastRow()を二重に呼び出したことで「範囲の行数には1以上」エラーが
連発したケース。どちらもAIが原因を特定して修正コードを提案してくれました。
🗓️ 開発タイムライン
AIを使った開発の感想: 「コードを書けなくても、何を作りたいか・どんな問題があるかを伝えれば、 AIが一緒に考えてくれる」という体験でした。エラーが出ても、症状をそのまま伝えれば 原因と解決策を返してくれる。プログラミングの知識より、 問題を正確に説明する力の方が大切だと実感しています。