指定した位置に空白列を挿入するの実装コード
Google Apps Script (GAS) を用いて、スプレッドシート内の指定した位置へ動的に空白列を挿入するには、Sheet オブジェクトの insertColumns() メソッドを使用します。まずは実務でそのまま利用できる基本的な実装コードと記述例を示します。
const sheet = SpreadsheetApp.getActiveSheet();
sheet.insertColumns(2, 2);
仕様と技術的な注意点
insertColumns() メソッドは、指定した列の位置に指定した数だけ新しい空白列を追加するための構文です。第1引数と第2引数の組み合わせによって、挿入位置と個数をコントロールします。
引数と実行時の挙動:
・第1引数(columnIndex):挿入の基準となる列番号を指定します。スプレッドシートの列指定は1から始まるため、「A列=1」「B列=2」「C列=3」となります。上記コードでは「2」を指定しているため、B列の位置が挿入対象となります。
・第2引数(numColumns):挿入したい空白列の数を指定します。上記コードでは「2」を指定しているため、B列の位置に新たに2列の空白列が割り込み、元々B列以降にあったデータは右方向に2列分自動的にシフト(移動)します。
なお、単一の列のみを挿入したい場合は、指定した列の後ろに1列追加する insertColumnAfter(columnIndex) や、前に追加する insertColumnBefore(columnIndex) といった専用のメソッドも用意されています。状況に応じて使い分けることが可能です。
この機能は、データフォーマットを動的に拡張し、新たな指標(カラム)を追加するバッチ処理などで非常に役立ちます。
落とし穴(数式参照の自動拡張):
既存のシート上で A:C や A1:C10 のように範囲を参照している数式が存在する場合、その参照範囲の途中に列を挿入すると、スプレッドシートの仕様により参照範囲が自動的に拡張されます(例:A:C が A:E に自動変化)。これにより、意図しない計算対象が数式に含まれてしまい、集計結果が歪む危険性があるため十分な注意が必要です。
実務での活用シーンとハマりポイント
実務における典型的なユースケースとしては、外部システムから出力されたCSVなどのローデータを取り込み、分析用レポートとして加工・整形する自動化バッチ処理が挙げられます。例えば、データ抽出後に「前月比」や「算出フラグ」といった計算用カラムを特定の列の間に割り込ませ、後続の処理で数式やデータを流し込むといったデータパイプラインの作成に最適です。
開発時に発生しやすいハマりポイントとしては、前述した「数式の自動参照拡張」と「インデックスのズレ(1ベースと0ベースの混同)」の2点が挙げられます。
数式の自動参照拡張への対策としては、列挿入を実行した後にGAS側から数式セルに対して正しい参照範囲の数式を再書き込み(setFormula)するか、参照範囲の影響を受けないよう列挿入のロジックを工夫する必要があります。また、GASのJavaScript配列操作(0から始まるインデックス)とスプレッドシートの列番号指定(1から始まるインデックス)を混同すると、意図した列の隣に空白列が挿入される事故が起きるため、引数に渡す数値の計算ロジックには十分注意してください。
この処理の基本メカニズム
この処理の基本メカニズムは、SpreadsheetApp クラスから取得したアクティブシートのデータ構造に対し、直接列を追加する命令を発行するという単純かつ強力なものです。sheet.insertColumns(2, 2) が実行されると、スプレッドシート描画エンジンは指定された位置のメモリ空間を拡張し、既存のセルデータや適用されているスタイル設定を保持したまま右側へ押し出す処理を行います。
手動で「右クリックして列を挿入」する操作をプログラムで自動化することにより、フォーマット変更に伴う手作業の転記ミスや列ずれを根絶できます。データ構造の変化に対して柔軟に対応できる堅牢な自動化スクリプトを構築するための基礎的なロジックとして機能します。
※本記事は基本的なロジックおよび構文解説です。最新の仕様についてはGoogle Apps Script (GAS)の公式ドキュメントをご確認ください。

