GASでスプレッドシートの行を追加する5つ方法(insertRows)

2021年11月6日

スプレッドシートでは新しいデータを行の途中に追加したい場合に行追加を行いますが、Google Apps Script(GAS)でも行を追加することができます。

GASスクリプトでスプレッドシートの行を追加する方法を解説します。

スプレッドシートの行を追加

スプレッドシートで表データを扱っている場合に、既存の行の間にデータを追加したいケースがあります。

データ入力が漏れていた場合に、タイムスタンプ的にこれまでのデータに差し込みたい場合に、行を追加したうえでデータを入力します。

そんな時スプレッドシートのシート操作で行を簡単に追加することができます。

追加挿入したい行の番号部分を右クリックすると、メニューが表示されます。

選択行の前に追加したい場合は「1行を上に挿入」、後ろに追加したい場合は「1行を下に挿入」を選択します。

さらに、複数行を選択した状態で同じ操作をすると、選択した行数分の行追加が可能です。

GASでスプレッドシートの行追加が可能

Google Apps Script(GAS)でも、スプレッドシートのGUIを操作と同様の、シートに行を追加することができます。

スプレッドシートにデータをGAS記録するスクリプトなどで、すでにデータがある範囲にデータを追加挿入していきたい場合に行追加のコードが有効です。

そうすることで、人間の手をかけることなく、GASでスプレッドシートの行を追加する処理が自動化できます。

スプレッドシートの行を追加する5つのGASメソッド

スプレッドシートの行を追加するGoogle Apps Script(GAS)のメソッドには、5種類ほどあります。

  1. Sheet.insertRowBefore(追加する行番号)
  2. Sheet.insertRowAfter(追加する行番号)
  3. Sheet.insertRowsBefore(追加する行番号, 追加行数)
  4. Sheet.insertRowsAfter(追加する行番号, 追加行数)
  5. Sheet.insertRows(追加する行番号,(追加行数))

いずれもスプレッドシートのSheetクラスで実行できるメソッドです。

insertRowBefore(insertRowAfter)

insertRowBeforeメソッドは、引数に指定した行番号の前(上)に1行追加します。

そのため、実行後、追加した行が引数に指定した行番号になります。

それに対し、insertRowAfterメソッドは引数に指定した行番号の後(下)に1行を追加します。

insertRowAfter実行後、追加した行は、引数に指定した行番号よりも1つ後ろの位置になっています。

insertRowsBefore(insertRowsAfter)

insertRowsBeforeとinsertRowsAfterは、前述の2つのメソッドが1行追加だったのに対し、複数行の追加挿入が可能です。

第二引数に追加したい行数を設定しますが、例えば4と指定すると、指定の位置の前後に4行を追加してくれます。

insertRowsBefore(insertRowsAfter)の第二引数を1にすると、insertRowBefore(insertRowAfter)と変わらない挙動になります。

insertRows

最後5つ目のinsertRowsは第一引数で追加する行番号を必須で指定し、第二引数で追加行数をオプションで指定できるメソッドです。

第一引数のみ設定したinsertRowsメソッドはinsertRowBeforeメソッドと同様で、第二引数も設定すると、insertRowsBeforeと同様になります。

うまく活用すればinsertRowsメソッドでほかのメソッドをすべて代替することもできるので、覚える量を少なくしたい場合は、insertRowsに絞るのも選択肢の1つです。

なお、行追加のメソッドはSheetクラス限定のため、SpreadsheetクラスやRangeクラスでは利用できないので注意しましょう。

行を追加する各GASメソッドの実行例

実際にスプレッドシートに行を追加する各種のメソッドを実行するGoogle Apps Script(GAS)のサンプルコードを紹介します。

function addRow() {
  //スクリプトに紐づいたスプレッドシートのアクティブなシートを読み込む
  let mySheet = SpreadsheetApp.getActiveSheet();
  
  //----指定した位置の前後に1行追加するメソッド----
  //insertRowBeforeで引数指定した行の前(上)に行追加
  mySheet.insertRowBefore(2);
  //insertRowAfterで引数指定した行の後ろ(下)に行追加
  mySheet.insertRowAfter(5);
  //----指定した位置の前後に複数行追加するメソッド----
  //insertRowsBeforeで引数指定した行の前(上)に4行追加
  mySheet.insertRowsBefore(2,4);
  //insertRowsAfterで引数指定した行の後ろ(下)に4行追加
  mySheet.insertRowsAfter(5,4);
  
  //insertRowsで指定した位置に行を挿入(第二引数で行数も指定可能)
  mySheet.insertRows(10);
}

GASスクリプトを実行すると、5種類のinsertRow(s)メソッドはそれぞれ前述で説明したように行追加します。

複数行追加する場合、insertRowsBefore(insertRows)またはinsertRowsAfterメソッドを、指定行の上か下か追加したい方向で使い分けましょう。

GASで列を追加することも可能

ここまではスプレッドシートの行を追加する方法をメソッドを解説しながら、サンプルコードを紹介してきました。

行と同じような方法で、スプレッドシートのシートの列追加もGoogle Apps Script(GAS)で可能です。

GASでの列追加の仕組みは、行追加の場合と同様なので、簡単にマスターできます。

まとめ・終わりに

今回、Google Apps Script(GAS)のスクリプトからスプレッドシートの行を追加する方法を紹介しました。

GASにはスプレッドシートのシートの行を追加するメソッドが5種類用意されています。

それぞれ追加する行の方向が前(上)か後ろ(下)か、追加列数が1列か複数列かでメソッドを使い分ける仕組みです。

スプレッドシートにデータをどんどん追加していくGASの自動化スクリプトでは、行を追加挿入できる機能を使えば、データの末尾だけでなく途中に差し込むことができます。

スプレッドシートのGAS操作で行をより使いこなすために、ぜひinsertRow(s)系メソッドを覚えましょう。