GASを使って、Googleドライブのファイルをバックアップする方法を「GASを使ってGoogleドライブ内のファイルを自動バックアップする!【Google App Script】」という記事で解説しました。

しかしながら、こちらの方法では、定期的かつ永遠に新しいファイルが作られてしまう様な形になっており、ファイルを削除するプログラムは用意していません。そのため、放置していたらファイル管理が煩雑になったり、最悪の場合容量制限にかかる可能性もあります。
今回は、Googleドライブ上にある特定のフォルダにおいて、古いファイルを定期的に「自動削除」するプログラムを作成します!是非上記の記事と合わせてファイルバックアップ機能や、一括削除プログラムなどを実装してみて下さい。
なぜ自動削除プログラムが必要なのか
上記の記事のように、自動作成プログラムを実装していた場合、自動削除の機能を入れないとひたすら容量を圧迫するだけの状況になってしまいます。
例えば、1ファイルを毎日作成するプログラムがあったとして、1年間で365ファイル出来上がります。
1ファイルあたり容量がたったの1Mバイトだったとしても、年間365Mバイト圧迫します。
同様のプログラムを仮に10個作っていたとしたら単純計算で年間3.6Gバイトも無駄に容量を食ってしまう計算になるのです…!
Googleドライブの無料上限は15GBなので、1年で1/4前後を圧迫してしまうのと同じ事です。
そのため、バックアッププログラムを作る時は単にコピーを作成し続けるだけでなく、同時に古いファイルを削除するように設計しておいた方がよいです。
削除する基準や期間などはそれぞれで異なると思いますが、まずはどうやってそれを実現していくのか見ていきましょう。
Googleドライブの古いファイルを定期的に削除する
さて、以前こちらの記事で作成したバックアップファイルですが、数日放置していたため自動でいくつかファイル作成がされていました。


今回は、このフォルダ内に入っているバックアップファイル(スプレッドシート)について、直近で作られた3ファイルを残し、それ以外は削除する様にGASを書いていきたいと思います。
直近3ファイルを残し、古いファイルを削除するコードを実装する
バックアップ作成時に実装した、こちらのプログラムが書かれてあるコンテナバインド型のGASファイルには追記せず、
function myBackUp() {
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // コンテナバインドされているスプレッドシートを取得
let spreadsheet_name = spreadsheet.getName(); // スプレッドシートのファイル名を取得
let file = DriveApp.getFileById(spreadsheet.getId()) // バックアップを取りたいファイルを指定
let folderId = 'ここにフォルダIDを記述';
let backup_folder = DriveApp.getFolderById(folderId); // フォルダの情報を取得
// バックアップの際のファイル名を指定
let buckup_fileName = "バックアップ_" + spreadsheet_name + "_" + Utilities.formatDate(new Date(), "JST", "yyyy-MM-dd");
// スプレッドシート(オリジナル)をコピーして保存
file.makeCopy(buckup_fileName,backup_folder);
console.log("ファイルがバックアップされました");
}スタンドアロン型で新たにGASファイルを作成し、そちらにスクリプトを記述します。

新たにGASファイルを用意して下さい。
function buckupDelete() {
let folderId = "ここにバックアップファイルが保存されているフォルダのID";
let folder = DriveApp.getFolderById(folderId);
// フォルダ内のファイルを取得
let files = folder.getFiles();
let fileArray = [];
while (files.hasNext()) {
var file = files.next();
fileArray.push(file);
}
// 日付順にソート(先頭に新しく作成したファイルがくる)
fileArray.sort(function(a, b) {
return b.getDateCreated().getTime() - a.getDateCreated().getTime();
});
// 古いバックアップファイルを削除(直近3つのファイルは無視)
for (let i = 3; i < fileArray.length; i++) {
fileArray[i].setTrashed(true);
}
}では、実際にコードを保存し、実行してみて下さい

ここで、Googleドライブを操作するため承認が求められます。プログラムに権限を渡す必要があるので、画面の通りに進んで「許可」をクリックして下さい。
そうする事で、GASが「Google ドライブのすべてのファイルの表示、編集、作成、削除」の権限を使う事ができます。

実行が完了すると、バックアップファイルが3つだけになっているのがわかると思います。

実際に、直近で作られた3ファイルのみが残り、それ以外はゴミ箱へ移動したのが確認できました!
ファイルがソートされているか確認する方法
プログラムコード内にソートする部分があり、あまりよくわからなかった人もいるかと思います。
何をやっているのかというと、エポック秒(1970 年 1 月 1 日からのミリ秒単位の経過時間)を利用して差分を見る事で、その配列の順番を入れ替えています。
実際にファイルがソートされているか確認したい時は、プログラムを一気に書くのではなく途中まで書いて、実際に配列の中身がどうなっているのかこまめに実行して確認する事が大事です。
以下が、実際にバックアップファイルが日付順にソートされているか確認するコードになります。
function buckupDelete() {
let folderId = "ここにバックアップファイルが保存されているフォルダのID";
let folder = DriveApp.getFolderById(folderId);
// フォルダ内のファイルを取得
let files = folder.getFiles();
let fileArray = [];
while (files.hasNext()) {
var file = files.next();
fileArray.push(file);
}
// 日付順にソート(先頭に新しく作成したファイルがくる)
fileArray.sort(function(a, b) {
return b.getDateCreated().getTime() - a.getDateCreated().getTime();
});
// それを確認する
fileArray.forEach( file => {
console.log(file.getDateCreated());
})
}
>>
23:46:43 お知らせ 実行開始
23:46:43 情報 Tue Feb 20 2024 00:59:42 GMT+0900 (Japan Standard Time)
23:46:43 情報 Mon Feb 19 2024 00:59:41 GMT+0900 (Japan Standard Time)
23:46:43 情報 Sun Feb 18 2024 00:59:41 GMT+0900 (Japan Standard Time)
23:46:43 情報 Sat Feb 17 2024 00:59:41 GMT+0900 (Japan Standard Time)
23:46:43 情報 Fri Feb 16 2024 00:59:41 GMT+0900 (Japan Standard Time)
23:46:43 情報 Thu Feb 15 2024 00:59:42 GMT+0900 (Japan Standard Time)
23:46:43 情報 Wed Feb 14 2024 00:59:42 GMT+0900 (Japan Standard Time)
23:46:43 情報 Tue Feb 13 2024 00:59:41 GMT+0900 (Japan Standard Time)
23:46:43 情報 Mon Feb 12 2024 00:59:41 GMT+0900 (Japan Standard Time)
23:46:43 情報 Sun Feb 11 2024 21:28:37 GMT+0900 (Japan Standard Time)
23:46:44 お知らせ 実行完了実際に日付順にソートできている事が確認できました。わからないときは色々コードをいじりながら、変数の中身がどう変わっているのか確認し、理解する事が大切です。
定期的に実行するトリガを設定
コードが完成したので、最後に自動化をするための「トリガ」を設定します。
今回は毎日実行する必要がないコードなので、週1程度のペースで自動的に実行される様に、下記の様な設定でトリガを設定しました。

トリガが設定できたら、自動バックアップ作成機能に対する「古いファイルを自動で削除する」機能の完成です!
まとめ
今回は自動バックアップによって永続的に作られるファイルへの対策である「GASを使ってGoogleドライブの古いファイルを定期的に削除する方法」をご紹介しました。
ファイルを一括で削除したり、自動化する際にも非常に便利な方法ですので、是非この機会にマスターして効果的なファイルバックアップの方法などを実現してみて下さい。


コメント