公式資料を参照して構成した手順です。本記事の操作・コードの実行は未確認です。小さな入力例で期待結果を確かめてから利用してください。
できあがるもの
CSV展開は3行2列になります。B2のカンマは区切りとして分裂せず、A列のP01とP02、B列の値が正しく対応します。
始める前に
- ブラウザ版Googleスプレッドシートの編集権限と紐付きApps Script
- コピーした検証用ファイルで実行。Apps ScriptはV8ランタイムを利用
- 「CSV入力」A2にCSV全体を1セルで保持、1万文字以下
- CSVは最大100行・10列、出力先「CSV展開」は未作成
入力例
CSV入力!A2の編集欄へ次の3行を1セルとして入力します。 code,note P01,"赤,青" P02,白
手順
- 空の検証用ファイルにCSV入力シートを作り、A2をプレーンテキストにします。CSVをセルへ普通に貼ると複数セルへ分かれる場合があるため、編集状態で1セルへ貼ります。
- 以下をスクリプトへ貼り付けて保存します。独立した例なので、ほかの記事の同名関数があるプロジェクトには混ぜません。 /** @OnlyCurrentDoc */ function expandCsv() { const ss=SpreadsheetApp.getActive(), s=ss.getSheetByName('CSV入力'); if(!s || ss.getSheetByName('CSV展開')) throw Error('シートを確認'); const text=s.getRange('A2').getValue(); if(typeof text!=='string' || !text || text.length>10000) throw Error('入力サイズを確認'); const data=Utilities.parseCsv(text), w=data[0].length; if(data.length>100 || w>10 || data.some(r=>r.length!==w)) throw Error('行数・列数を確認'); const safe=data.map(r=>r.map(v=>"'"+v)); const out=ss.insertSheet('CSV展開').getRange(1,1,safe.length,w); out.setNumberFormat('@').setValues(safe); }
- expandCsvを手動実行し、CSV展開のB2が「赤,青」という1セルになるか確認します。すべて文字列として書くため、数値への変換は次の工程で明示的に行います。
- 別のコピーで末尾に3列の行を追加し、列数エラーで停止するか試します。出力シートが存在すれば先に停止するため、検証ごとに出力を片付けてから試してください。
期待結果と照合する
CSV展開は3行2列になります。B2のカンマは区切りとして分裂せず、A列のP01とP02、B列の値が正しく対応します。
まずこの入力例で確認し、件数や値が一致しているかを見ます。完了表示だけで判断せず、重複・空欄・対象外データも残っていないか確認してください。
うまくいかないとき
- 文字コード変換やファイル読込は行いません。ここでは既に正しく読める文字列だけを扱います。
- CSVの見出しや内容が業務上正しいかは別です。列数がそろっていることだけで本番へ登録しません。
止める・元に戻す
CSV展開と検証用のCSV入力を削除します。外部ファイルの変更やDriveへの保存は行っていないため、元のCSVはそのままです。
公式資料・対応範囲
参照日:2026-10-17。公式資料の一般的な機能説明と、本記事固有の入力例の実行検証は別です。実務での短縮時間や効果は未計測です。