Google Spreadsheetで行を削除する方法【GASの関数deleteRowを使ってみた】

Google Spreadsheetで行を削除したいときに便利な関数があります。それは、deleteRowという関数です。この関数は、Google Apps Script(GAS)のスプレッドシートクラスに属するメソッドで、指定した位置の行を削除します。この関数は、スプレッドシートに複数の行がある場合にのみ使用できます。スプレッドシートに行が一つしかない場合は、エラーが発生します。

💡この記事でわかること
  • deleteRow関数の基本的な構文と引数の意味
  • deleteRow関数で行を削除するプログラムサンプルとその結果
  • deleteRow関数でエラーが発生する場合の対処法

deleteRow関数の基本的な構文と引数の意味

deleteRow関数の基本的な構文は以下のとおりです。

var spreadsheet = spreadsheet.deleteRow(rowPosition);

ここで、spreadsheetはスプレッドシートオブジェクトで、SpreadsheetApp.getActiveSpreadsheet()などで取得できます。rowPositionは削除したい行の位置で、数値型の値を指定します。例えば、1を指定すると最初の行を削除します。この関数は、行を削除した後に、同じスプレッドシートオブジェクトを返します。

deleteRow関数で行を削除するプログラムサンプルとその結果

では、実際にdeleteRow関数で行を削除するプログラムを書いてみましょう。以下のようなスプレッドシートを用意します。

このスプレッドシートで、最初の行(1行目)を削除するプログラムは以下のようになります。

function deleteRow() {
  // スプレッドシートオブジェクトを取得
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  // 最初の行を削除
  spreadsheet.deleteRow(1);
}

このプログラムを実行すると、以下のようにスプレッドシートが変更されます。

deleteRow関数でエラーが発生する場合の対処法

deleteRow関数は、スプレッドシートに行が一つしかない場合には使用できません。この場合は、エラーが発生します。例えば、以下のようなスプレッドシートで、deleteRow関数を実行すると、以下のようなエラーメッセージが表示されます。

Exception: You can't remove the last row in a sheet.

このような場合は、スプレッドシートに新しい行を追加してから、deleteRow関数を実行する必要があります。例えば、以下のようなプログラムを書くと、エラーを回避できます。

function deleteRow() {
  // スプレッドシートオブジェクトを取得
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  // アクティブなシートオブジェクトを取得
  var sheet = spreadsheet.getActiveSheet();
  // アクティブなシートに含まれる行の数を取得
  var rowCount = sheet.getMaxRows();
  // 行が一つしかない場合は、新しい行を追加
  if (rowCount == 1) {
    sheet.insertRowAfter(1);
  }
  // 最初の行を削除
  spreadsheet.deleteRow(1);
}

まとめ

この記事では、Google Spreadsheetで行を削除する方法について紹介しました。deleteRow関数を使えば、指定した位置の行を削除することができます。この関数は、Google Apps Script(GAS)のスプレッドシートクラスに属するメソッドで、行を削除した後に、同じスプレッドシートオブジェクトを返します。ただし、スプレッドシートに行が一つしかない場合は、エラーが発生するので注意が必要です。詳細は、公式ドキュメントを参照してください。

参考文献

GASをイチから学びたい方へ

このブログでは断片的な説明になってしまっていますが、本書は幅広いGASの内容が網羅的に学べる本です。イチから学びたい方は是非読んでみてください。

すでにGASをある程度マスターした方にも辞書的に手元に置いておくと便利です。