【Google Apps Script】大量のシートをバックアップしてから削除する方法【スプレッドシート】

スプレッドシートで日毎にシートを追加して使用している場合、日に日にシートが溜まってスプレッドシートが重くなりますよね。。

今回は月初めに先月のシートをバックアップ(コピーして特定のフォルダに格納)してから、バックアップしたシートを削除するというコードを書いていきます。

 

尚、シートのタブ名は日付(M/d)で管理している場合のコードです。

 

function createBackup() {
  //【手順①】まずは先月までのシートをバックアップ(コピーして指定フォルダに格納)
  //アクティブなスプレッドシートを取得
let ss = SpreadsheetApp.getActiveSpreadsheet();
 
  //ドライブに格納するため上記のスプレッドシートをfileオブジェクトで取得
let file = DriveApp.getFileById(ss.getId());
  //先月の日付データの取得
let now = new Date();
let y = now.getFullYear();
let m = now.getMonth();
let lastMonth = new Date(y, m-1, 1);
m = lastMonth.getMonth();
 
  //バックアップのスプレッドシート名を宣言
let fileName = `【バックアップ】${m+1}月分`;
 
  //格納したいドライブのIDを指定
let folder = DriveApp.getFolderById("xxxxxxxxxxxxxxx");
 
  //バックアップ用にスプレッドシートをコピーして指定のフォルダに格納
file.makeCopy(fileName, folder);
 
 
  //【手順②】先月分のシートを削除
  //先月の1日から31日までfor文をまわして、該当シートを削除する
for (let i = 1; i <= 31; i++) {
   let sheet = ss.getSheetByName(`${m + 1}/${i}`);
      if (sheet) {
     ss.deleteSheet(sheet);
     }
   }
  }

 

 

 

注意点としては、手順②の先月分のシートを削除する際に、

1日から31日までfor文をまわしているのですが月によっては31日もない場合があるので

更にif文でシートが存在している場合に削除するようにコードを書く必要があります。