Google Apps Script(GAS) でスプレッドシートのセル削除方法まとめ~clearとdeleteCellsメソッドの違い

Google Apps Script(GAS)ではスプレッドシートのセルに書き込まれた値を削除することができます。

今回GASのコードでシート上のセルの値・書式を削除する方法とセル自体を削除する方法の2種類を解説します。

スプレッドシートのセルをGASで操作

Google Apps Script(GAS)では、スプレッドシートの様々な処理を行うことが可能です。

スプレッドシートを取得し、GASで処理したいシートを読み込んだ後、シート上のセルに対して値を取得したり、GASスクリプトで処理・算出した値を書き込むことができます。

スプレッドシートのセルをGoogle Apps Script(GAS)で取得・書き込む方法は下記の記事を参照してください。

Google Apps Script(GAS)入門 スプレッドシートのセル取得・書き込み方法(getValue,setValue)

セル取得・書き込みに加え、削除もGASで可能

GASでは、前述したセルの読み込みと書き込みのほかに、セルの値を削除することができます。

GASでセルの値を削除することで、スクリプト実行時にシート上のデータを初期化するといったコードの実装ができます。

例えば、GASの実行処理で前回7行分のデータをシートに出力したのに、今回は6行だった場合、初期化しないと7行目のセルに前回のデータが残ってしまいます。

こうしたケースの時に、GASの処理を行う前にセルの値を削除する初期化を処理しておけば、問題を回避することができます。

セル自体を削除するメソッドはdeleteCellsメソッド

セルの値ではなく、セル自体を削除することもGoogle Apps Scriptで可能です。

セル削除はRangeクラスで利用できるdeleteCellsメソッドを使って行います。

Range.deleteCells(shiftDimension)

引数に指定されているshiftDimensionは、セルを列方向・行方向どちらで削除するか指定します。

スプレッドシートの特定のセル自体をGoogle Apps Script(GAS)で削除したい場合

例えば、上記のようなスプレッドシートのB3セルを削除するケースでサンプルコードを紹介します。

列方向で削除したい場合は「SpreadsheetApp.Dimension.COLUMNS」と引数を指定します。

function delCellColumns() {
//スクリプトに紐づくスプレッドシートのアクティブなシートを読み込む
let sheet = SpreadsheetApp.getActiveSheet();
//B3セルを範囲として指定する
let delRange = sheet.getRange(3, 2);
//指定したセルを削除し、削除後、セルを左に移動させる
delRange.deleteCells(SpreadsheetApp.Dimension.COLUMNS)
}

Google Apps Script(GAS)のdeleteCellsでSpreadsheetApp.Dimension.COLUMNSを引数にしてして実行した結果

スプレッドシートでセルを削除する際の「セルを削除>左に移動」と同じ操作となります。

逆に行方向で削除したい場合は、「SpreadsheetApp.Dimension.ROWS」と引数を指定します。

function delCellRows() {
//スクリプトに紐づくスプレッドシートのアクティブなシートを読み込む
let sheet = SpreadsheetApp.getActiveSheet();
//B3セルを範囲として指定する
let delRange = sheet.getRange(3, 2, 1, 3);
//指定したセルを削除し、削除後、セルを上に移動させる
delRange.deleteCells(SpreadsheetApp.Dimension.ROWS)
}

Google Apps Script(GAS)のdeleteCellsでSpreadsheetApp.Dimension.ROWSを引数にしてして実行した結果

スプレッドシートでセルを削除する際の「セルを削除>上に移動」と同じ操作となります。

Google Apps Script(GAS)でスプレッドシートのセル自体を削除するdeleteCellsメソッドのサンプルコード

このように、シート上の指定した範囲のセルごと削除し、削除後に寄せる方向を選ぶことができます。

また、セルの範囲はサンプルコードのように1セルだけでなく、複数範囲選択することも可能です。

セルの値・書式を削除するGASメソッドは3種類

Google Apps Script(GAS) でスプレッドシートのセルを削除するメソッドは3種類用意されています。

  1. clearContent()メソッド
  2. clearFormat()メソッド
  3. clear()メソッド

いずれのメソッドもセルの範囲を設定したRangeクラスで実行可能です。

スプレッドシートのセルの値・書式を削除するclearContent,clearFormatと両方削除するclearメソッドのGASコード

スプレッドシートのシートを取得した状態ではメソッドは実行できないので、注意しましょう。

それぞれのメソッドについて詳細に解説していきます。

①セルの値を削除するclearContent()

clearContentメソッドは指定された範囲のセルに入力されている値を削除します。

削除対象となるのはセルの値のみで、フォントや文字の大きさ、セルの罫線といった書式に関する部分は削除されません。

②セルの書式を削除するclearFormat()

2つ目のclearFormatメソッドは、指定された範囲のセルに設定されている書式を削除します。

セルの値は削除されず、セルのフォントや太字、文字の色などがクリアされます。

③セルの値と書式両方削除するclear()

最後のclearメソッドは、指定された範囲のセルの値とフォント、どちらも削除します。

clearContent()とclearFormat()の2つのメソッドが合体しています。

なお、clearメソッドではセルにセットされた値や書式は削除しますが、セル自体の削除は行われません。

セル自体を削除するには、シートの行単位でセル自体を削除する○か、列単位で削除する○メソッドを使用します。

clear、clearContent、clearFormatの使い分けは?

Google Apps Script(GAS)でスプレッドシートのセルの値・書式を削除するclearContent、clearFormat、clearメソッドはどのように使い分けるとよいでしょうか?

あらかじめスプレッドシートに表が用意されていて、表に値をスクリプトがセットするような機能だと、clearContentメソッドを使用します。

clearメソッドだと、表の書式も削除されてしまうので、表の見た目が崩れてしまうからです。

逆にGASスクリプトで表作成の処理も行う場合には、clearメソッドを使用します。

clearContentメソッドだと、書式まで削除されず、前回実行時に作成された表の書式が残ってしまいます。

clearFormatメソッドはあまり利用頻度は多くありませんが、多くのユーザーがスプレッドシートを共同編集していると、フォントなどの書式がバラバラになります。

コピペなどでコピー元の書式がそのままペーストされてしまうためです。

そうした際に、フォントの書式を整える意味で、デフォルトの書式に戻すのにclearFormatは有効です。

実際には、稼働させるGASスクリプトに依存するため、用途次第にはなりますので、どういったGASスクリプトの処理か判断した上で、使い分けるのが大切です。

まとめ・終わりに

今回、Google Apps Script(GAS)でスプレッドシートのセルを削除する方法を解説しました。

スプレッドシートのセルを削除する方法は、①セル自体を削除する、②セルの値・書式を削除するの2種類があります。

①のセル自体を削除する場合は、deleteCellsメソッド、②のセルの値・書式を削除する場合はclear/clearContent/clearFormatメソッドを使用します。

それぞれGASで行う自動処理の内容に応じ、使い分けることになるので、紹介した内容を参考に、シートのセル削除のスクリプトを実装してみてください。