公式資料を参照して構成した手順です。本記事の操作・コードの実行は未確認です。小さな入力例で期待結果を確かめてから利用してください。
できあがるもの
重複コードにはP01・2の1行だけが出ます。P02とP03は出ず、空欄コードも集計から除外します。商品マスターの行は削除されません。
始める前に
- ブラウザ版Googleスプレッドシートの編集権限と紐付きApps Script
- コピーした検証用ファイルで実行。Apps ScriptはV8ランタイムを利用
- 「商品」のA列は商品コード、1000行以内、先頭ゼロは文字列
- 出力先「重複コード」は未作成
入力例
商品!A1:B5は「コード,品名」「P01,ノート」「P02,ペン」「P01,ノート旧版」「P03,封筒」です。
手順
- ファイルの検証用コピーを開きます。P01の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); }
- duplicateCodesを手動実行し、権限確認後に出力を開きます。P01が2件と表示され、商品シートの4明細が残っているか確認します。
- 不備修正時は、元の申請・登録記録を調べてコードの修正が必要かを判断します。再検査する前に既存の出力を別名で保存するか削除し、前回結果と混ぜないようにします。
期待結果と照合する
重複コードにはP01・2の1行だけが出ます。P02とP03は出ず、空欄コードも集計から除外します。商品マスターの行は削除されません。
まずこの入力例で確認し、件数や値が一致しているかを見ます。完了表示だけで判断せず、重複・空欄・対象外データも残っていないか確認してください。
うまくいかないとき
- 前後空白の異なるコードは別の値です。規則を決めずにtrimして統合すると不正な同一化を招きます。
- このコードの比較は大文字と小文字を区別します。商品コードの正式な仕様と合わせて使ってください。
止める・元に戻す
重複コードを削除し、duplicateCodes関数を外します。商品シートは読み取りだけで、重複行を戻す操作は不要です。
公式資料・対応範囲
参照日:2026-10-17。公式資料の一般的な機能説明と、本記事固有の入力例の実行検証は別です。実務での短縮時間や効果は未計測です。