しごと自動化レシピ

WORK RECIPE GAS

セル内のCSVを引用符に対応して表へ展開する

検証用セルに貼った小さなCSVをUtilities.parseCsvで解析し、別シートへ展開します。カンマを含む引用項目を単純分割せず、列数不一致と式としての再解釈を防ぎます。

実行確認の記録なし

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

できあがるもの

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,白

手順

  1. 空の検証用ファイルにCSV入力シートを作り、A2をプレーンテキストにします。CSVをセルへ普通に貼ると複数セルへ分かれる場合があるため、編集状態で1セルへ貼ります。
  2. 以下をスクリプトへ貼り付けて保存します。独立した例なので、ほかの記事の同名関数があるプロジェクトには混ぜません。 /** @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); }
  3. expandCsvを手動実行し、CSV展開のB2が「赤,青」という1セルになるか確認します。すべて文字列として書くため、数値への変換は次の工程で明示的に行います。
  4. 別のコピーで末尾に3列の行を追加し、列数エラーで停止するか試します。出力シートが存在すれば先に停止するため、検証ごとに出力を片付けてから試してください。

期待結果と照合する

CSV展開は3行2列になります。B2のカンマは区切りとして分裂せず、A列のP01とP02、B列の値が正しく対応します。

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

うまくいかないとき

  • 文字コード変換やファイル読込は行いません。ここでは既に正しく読める文字列だけを扱います。
  • CSVの見出しや内容が業務上正しいかは別です。列数がそろっていることだけで本番へ登録しません。

止める・元に戻す

CSV展開と検証用のCSV入力を削除します。外部ファイルの変更やDriveへの保存は行っていないため、元のCSVはそのままです。

公式資料・対応範囲

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

同じツールで試す

GASの記事一覧へ →