GASでスプレッドシートのあれこれを削除する方法【Google Apps Script】

Google Apps Script (GAS)

GASでスプレッドシートを扱っていると、シートや行、セル文字などを削除したいという時があります。

こんな経験ありませんか?
  • いつも削除方法を忘れてしまう
  • 上手く削除できない
  • 意図しない箇所が削除されてしまった

比較的簡単な操作でありながら、その方法が曖昧になったり、意図しない箇所が削除されてしまうことも少なくありません。

この記事では、シートを消す方法からセルの中身を消す方法までを網羅的にまとめてみましたのでご紹介します。

初心者の方はもちろん、日常的にGASをよく扱う方の備忘録としてご活用ください。

こんな人におすすめ
  • シートを削除したい
  • 行や列を削除したい
  • セルやその中身(文字、背景色など)を削除したい

シート自体を削除する

スプレッドシート下部にタブ分けされたシートそのものを削除する方法です。

今現在開いているシート(アクティブシート)を削除する方法シート名を指定して削除する方法2種類があります。

いずれの方法もSpreadsheetクラスのメソッドとして使用しますので、後述のように”Spreadsheetクラス.〇〇”の形で構文を記述します。

アクティブシートを削除する方法 deleteActiveSheet( )

今現在開いているシート(アクティブシート)を削除する方法です。

構文:Spreadsheetクラス.deleteActiveSheet( )

サンプルコードは以下の通りです。

1行目でアクティブなスプレッドシートを取得し、変数ssとして宣言しています。

2行目が上述の構文にあたる部分です。(アクティブなスプレッドシートの中の、アクティブなシートを削除しているイメージです。)

function myFunction(){
  const ss = SpreadsheetApp.getActiveSpreadsheet();  //アクティブなスプレッドシートを取得して変数ssとして宣言
  ss.deleteActiveSheet();  //アクティブなシートを削除
}

アクティブなシート(”都道府県”シート)そのものが削除されていますね↓

シート名を指定して削除する方法 deleteSheet(指定したシートを表す変数名)

シート名を指定して削除する方法です。

構文:Spreadsheetクラス.deleteSheet(指定したシートを表す変数名)

サンプルコードは以下の通りです。

2行目でシート1を取得して変数sheetとした後に、3行目の引数として変数sheetを与えるのがポイントです。(今回は変数名をsheetとしましたが、変数名は自由に設定して大丈夫です。)

function myFunction(){
  const ss = SpreadsheetApp.getActiveSpreadsheet();  //アクティブなスプレッドシートを取得して変数ssとして宣言
  const sheet = ss.getSheetByName("シート1")  //シート1を取得して変数sheetとして宣言
  ss.deleteSheet(sheet);  //シート1を削除
}

ちなみに、deleteSheetの引数で直接シート名を指定するとエラーになるので注意が必要です↓

正常に実行されるとこんな感じです↓(アクティブなスプレッドシートの中のシート1が削除されています。)

スポンサーリンク

シートの中身を削除する

シートは複数の行と列から構成されたセルの集まりで、文字やフォーマット(罫線、背景色)など様々な要素から成り立っています。

それらをシートの全範囲や特定の行や列といった大まかなくくりで削除したいといった時には後述の5つの方法が役立ちます。

いずれの方法もSheetクラスのメソッドとして使用しますので、後述のように”Sheetクラス.〇〇”の形で構文を記述します。

シート(全てのセル)の文字とフォーマットを削除する方法 clear( )

この方法はシート内の文字とフォーマットを全て削除します。

構文:Sheetクラス.clear( )

サンプルコードは以下の通りです。

1行目でアクティブなスプレッドシートを取得。

2行目でシート名を指定して”都道府県”シートを取得しています。

”都道府県”シートは変数sheetに格納されていますので、3行目でsheet.clear( )とすることで”都道府県”シートの中身が全て削除されます。

function myFunction(){
  const ss = SpreadsheetApp.getActiveSpreadsheet();  //アクティブなスプレッドシートを取得して変数ssとして宣言
  const sheet = ss.getSheetByName("都道府県")  //シート”都道府県”を取得して変数sheetとして宣言
  sheet.clear();  //シートの中身を全て削除
}

先程(シート自体の削除)とは異なり、シート自体は残っているものの、その中身は全て削除されているのが分かります↓

シート(全てのセル)の文字のみを削除する方法 clearContents( )

この方法はシート内の文字のみを削除します。枠線や背景色といったフォーマットは削除されずにそのままの状態を保ちます。

構文:Sheetクラス.clearContents( )

※最後のsを忘れないように注意しましょう!

サンプルコードは以下の通りです。

function myFunction(){
  const ss = SpreadsheetApp.getActiveSpreadsheet();  //アクティブなスプレッドシートを取得して変数ssとして宣言
  const sheet = ss.getSheetByName("都道府県")  //シート”都道府県”を取得して変数sheetとして宣言
  sheet.clearContents();  //シート内の文字を削除
}

シート内の文字のみが削除され、枠線や背景色は残されていますね↓

シート(全てのセル)のフォーマットのみを削除する方法 clearFromats( )

この方法はシート内のフォーマット(枠線や背景色など)を削除します。文字は削除されずにそのままの状態を保ちます。

構文:Sheetクラス.clearFromats( )

※最後のsを忘れないように注意しましょう!

サンプルコードは以下の通りです。

function myFunction(){
  const ss = SpreadsheetApp.getActiveSpreadsheet();  //アクティブなスプレッドシートを取得して変数ssとして宣言
  const sheet = ss.getSheetByName("都道府県")  //シート”都道府県”を取得して変数sheetとして宣言
  sheet.clearFormats();  //シート内のフォーマットを削除
}

シート内のフォーマットのみが削除され、文字は残されていますね↓

特定の列を削除する方法 deleteColumns(削除を開始したい列番号[,列数])

この方法は指定した列を削除します。下の図のような右クリックをした時の列の削除と同じ動作をGASで自動化することが出来ます。

右クリックした時の画面

構文:Sheetクラス.deleteColumns(削除を開始したい列番号[,列数])

( )内の引数には削除を開始したい列番号が必須となります。

[ ]内の引数は必須ではありませんが、ここで削除する列数を指定することができます。(引数を与えない場合は1列のみの削除となります。)

サンプルコードは以下の通りです。(今回はB列からD列の3列を削除します。)

function myFunction(){
  const ss = SpreadsheetApp.getActiveSpreadsheet();  //アクティブなスプレッドシートを取得して変数ssとして宣言
  const sheet = ss.getSheetByName("都道府県")  //シート”都道府県”を取得して変数sheetとして宣言
  sheet.deleteColumns(2,3);  //2列目から開始して3列分削除(つまりB列からD列を削除)
}

B列からD列が削除されましたね↓

特定の行を削除する方法 deleteRows(削除を開始したい行番号[,行数])

この方法は指定した行を削除します。下の図のような右クリックをした時の行の削除と同じ動作をGASで自動化することが出来ます。

右クリックした時の画面

構文:Sheetクラス.deleteRows(削除を開始したい行番号[,行数])

( )内の引数には削除を開始したい行番号が必須となります。

[ ]内の引数は必須ではありませんが、ここで削除する行数を指定することができます。(引数を与えない場合は1行のみの削除となります。)

サンプルコードは以下の通りです。(今回は2行から4行の3行を削除します。)

function myFunction(){
  const ss = SpreadsheetApp.getActiveSpreadsheet();  //アクティブなスプレッドシートを取得して変数ssとして宣言
  const sheet = ss.getSheetByName("都道府県")  //シート”都道府県”を取得して変数sheetとして宣言
  sheet.deleteRows(2,3);  //2行目から開始して3行分削除(つまり2行から4行を削除)
}

2行目から4行目が削除されましたね↓

スポンサーリンク

指定したセルの中身を削除する

特定の範囲(特定のセル)を指定して小さなくくりで削除を行いたい場合は以下の3つの方法を使用しましょう。

いずれの方法もRangeクラスのメソッドとして使用しますので、後述のように”Rangeクラス.〇〇”の形で構文を記述します。

指定したセル内の文字とフォーマットを削除する方法 clear( )

この方法は指定したセル内の文字とフォーマットを全て削除します。

構文:Rangeクラス.clear( )

サンプルコードは以下の通りです。(今回はA1セルからD10セルを指定して、これらの範囲内にある文字とフォーマットを削除します。)

function myFunction(){
  const ss = SpreadsheetApp.getActiveSpreadsheet();  //アクティブなスプレッドシートを取得して変数ssとして宣言
  const sheet = ss.getSheetByName("都道府県")  //シート”都道府県”を取得して変数sheetとして宣言
  const range = sheet.getRange("A1:D10");  //A1セルからD10セルを取得して変数rangeとして宣言
  range.clear();  //指定した範囲内にある文字とフォーマットを全て削除
}

A1セルからD10セルにある文字とフォーマットが削除されました↓

指定したセル内の文字のみを削除する方法 clearContent( )

この方法は指定したセル内の文字のみを削除します。枠線や背景色といったフォーマットは削除されずにそのままの状態を保ちます。

Rangeクラス.clearContent( )

サンプルコードは以下の通りです。(今回はA1セルからD10セルを指定して、これらの範囲内にある文字のみを削除します。)

function myFunction(){
  const ss = SpreadsheetApp.getActiveSpreadsheet();  //アクティブなスプレッドシートを取得して変数ssとして宣言
  const sheet = ss.getSheetByName("都道府県")  //シート”都道府県”を取得して変数sheetとして宣言
  const range = sheet.getRange("A1:D10");  //A1セルからD10セルを取得して変数rangeとして宣言
  range.clearContent();  //指定した範囲内にある文字のみを削除
}

A1セルからD10セルにある文字のみが削除されました↓

指定したセル内のフォーマットのみを削除する方法 clearFromat( )

この方法は指定したセル内のフォーマット(枠線や背景色など)を削除します。文字は削除されずにそのままの状態を保ちます。

構文:Rangeクラス.clearFromat( )

サンプルコードは以下の通りです。(今回はA1セルからD10セルを指定して、これらの範囲内にあるフォーマットのみを削除します。)

function myFunction(){
  const ss = SpreadsheetApp.getActiveSpreadsheet();  //アクティブなスプレッドシートを取得して変数ssとして宣言
  const sheet = ss.getSheetByName("都道府県")  //シート”都道府県”を取得して変数sheetとして宣言
  const range = sheet.getRange("A1:D10");  //A1セルからD10セルを取得して変数rangeとして宣言
  range.clearFormat();  //指定した範囲内にあるフォーマットのみを削除
}

A1セルからD10セルにあるフォーマットのみが削除されました↓

まとめ

この記事では、シートを消す方法からセルの中身を消す方法までを網羅的にご紹介しました。

以下、まとめです↓

用途クラスメンバー
アクティブシートを削除するSpreadsheetdeleteActiveSheet( )
シート名を指定して削除するSpreadsheetdeleteSheet(指定したシートを表す変数名)
シート(全てのセル)の文字とフォーマットを削除するSheetclear( )
シート(全てのセル)の文字のみを削除するSheetclearContents( )
シート(全てのセル)のフォーマットのみを削除するSheetclearFormats( )
特定の列を削除するSheetdeleteColumns(削除を開始したい列番号[,列数])
特定の行を削除するSheetdeleteRows(削除を開始したい行番号[,行数])
指定したセル内の文字とフォーマットを削除するRangeclear( )
指定したセル内の文字のみを削除するRangeclearContent( )
指定したセル内のフォーマットのみを削除するRangeclearFormat( )
スポンサーリンク

コメント

タイトルとURLをコピーしました