しごと自動化レシピ

WORK RECIPE GAS

重複する商品コードを削除せず一覧へ分ける

商品コードの出現回数を数え、重複コードと件数を別シートへ書き出します。重複した行の価格差などを確認できるよう、元のマスターを残したまま点検表だけを作成します。

実行確認の記録なし

公式資料を参照して構成した手順です。本記事の操作・コードの実行は未確認です。小さな入力例で期待結果を確かめてから利用してください。

できあがるもの

重複コードにはP01・2の1行だけが出ます。P02とP03は出ず、空欄コードも集計から除外します。商品マスターの行は削除されません。

始める前に

  • ブラウザ版Googleスプレッドシートの編集権限と紐付きApps Script
  • コピーした検証用ファイルで実行。Apps ScriptはV8ランタイムを利用
  • 「商品」のA列は商品コード、1000行以内、先頭ゼロは文字列
  • 出力先「重複コード」は未作成
入力例

商品!A1:B5は「コード,品名」「P01,ノート」「P02,ペン」「P01,ノート旧版」「P03,封筒」です。

手順

  1. ファイルの検証用コピーを開きます。P01の2件が同一商品か別版かを、コードだけで自動決定しないという運用を確認してください。
  2. 以下をスクリプトへ貼り付けて保存します。独立した例なので、ほかの記事の同名関数があるプロジェクトには混ぜません。 /** @OnlyCurrentDoc */ function duplicateCodes() { const ss=SpreadsheetApp.getActive(), s=ss.getSheetByName('商品'); if(!s || ss.getSheetByName('重複コード')) throw Error('シートを確認'); const n=s.getLastRow(); if(n<2 || n>1000) throw Error('行数を確認'); const counts=new Map(); s.getRange(2,1,n-1,1).getDisplayValues().forEach(([v])=>{ if(v.trim()) counts.set(v,(counts.get(v)||0)+1); }); const out=[['コード','件数']]; for(const [v,n] of counts) if(n>1) out.push(["'"+v,n]); ss.insertSheet('重複コード').getRange(1,1,out.length,2).setValues(out); }
  3. duplicateCodesを手動実行し、権限確認後に出力を開きます。P01が2件と表示され、商品シートの4明細が残っているか確認します。
  4. 不備修正時は、元の申請・登録記録を調べてコードの修正が必要かを判断します。再検査する前に既存の出力を別名で保存するか削除し、前回結果と混ぜないようにします。

期待結果と照合する

重複コードにはP01・2の1行だけが出ます。P02とP03は出ず、空欄コードも集計から除外します。商品マスターの行は削除されません。

まずこの入力例で確認し、件数や値が一致しているかを見ます。完了表示だけで判断せず、重複・空欄・対象外データも残っていないか確認してください。

うまくいかないとき

  • 前後空白の異なるコードは別の値です。規則を決めずにtrimして統合すると不正な同一化を招きます。
  • このコードの比較は大文字と小文字を区別します。商品コードの正式な仕様と合わせて使ってください。

止める・元に戻す

重複コードを削除し、duplicateCodes関数を外します。商品シートは読み取りだけで、重複行を戻す操作は不要です。

公式資料・対応範囲

参照日:2026-10-17。公式資料の一般的な機能説明と、本記事固有の入力例の実行検証は別です。実務での短縮時間や効果は未計測です。

同じツールで試す

GASの記事一覧へ →