スキルアップを始める!

【GAS】たくさんのシートをループで一気に削除する方法(GASでシートを作成する)

GAS(GoogleAppsScript)
GAS(GoogleAppsScript)
この記事は約4分で読めます。

※記事中に広告情報を含みます。

\ワードプレスのスキルアップはこちら!/ WordPress入門読本

Googleスプレッドシートで、例えば50個のシートがある場合に、Google Apps Script(GAS)を使って一気に削除します。

GASでシートを削除するには

シートを削除するには「.deleteSheet(“シート名”)」を使います。

まずは、getSheetByNameでシート名を取得して、その後、取得した変数で削除を実行します。

function deleteSheet() {
    const ss = SpreadsheetApp.getActiveSpreadsheet();
    const delSheet= ss.getSheetByName("1");
    ss.deleteSheet(delSheet);
}

実行すると、いつものように承認画面が出てくるので、権限を与えます。

シートが削除されました!

シートを一気に削除する

シートを一気削除する場合は、ループ文でまわします。

function addNewSheet() {
    const ss = SpreadsheetApp.getActiveSpreadsheet();
    const newSheet = ss.insertSheet();
    newSheet.setName(1);
}

シートが追加されました!

ループでまわす

あとは、シートをループで次々に作成していきます。50までは欲しいので、ループは「51より小さい」としています。

function deleteSheet() {
    const ss = SpreadsheetApp.getActiveSpreadsheet();
    const sheets = ss.getSheets();
    for(let i=0; i<sheets.length; i++) {
      sheetName = sheets[i].getSheetName();
      ss.deleteSheet(delSheet);
     } 
}

実行してみます。

エラーが出ました。

Exception: The parameters (String) don't match the method signature for SpreadsheetApp.Spreadsheet.deleteSheet.
deleteSheet	@ 削除.gs:6

例外です。パラメータ (String) が SpreadsheetApp.Spreadsheet.deleteSheet のメソッドシグネチャにマッチしません。…。

getSheetByNameでシート名を取得する方法に変更してみます。

function deleteSheet() {
    const ss = SpreadsheetApp.getActiveSpreadsheet();
    const sheets = ss.getSheets();
    for(let i=0; i<sheets.length; i++) {
      const sheetName = sheets[i].getSheetName();
      const delSheet= ss.getSheetByName(sheetName);
      ss.deleteSheet(delSheet);
     } 
}

シートが次々に削除されていきます。

エラーが出ました…。

Exception: ドキュメント内のシートをすべて削除することはできません。
deleteSheet	@ 削除.gs:7

Googleスプレッドシートはシートを空にすることができないのでエラーが出たようです。最後の1つが残りました。

もし特定のシートを残す場合は、ループの段階で何かひと工夫を入れておくと良さそうです。

まとめ

このような感じで、GASを使ってシートを一気に削除することができました。

続きは、また。

URLをコピーしました!