コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

Googleドライブを整理していたら日付が変わっていた

私生活は薄っぺらいのにドライブの中身だけは充実してしまっているという現実

はい、おはようございます。僕です。今日も一日がはじまりました。どうして一日がはじまってしまうのでしょうか、そんなことを考えながら数GBまでたまったデータを無心で削除していた次第でございます。虚無ですね。


だんだんと容量が増えてきたので整理してみるの巻

さてさて、これまでに何個かブログでフリーのストレージサービス紹介してたような気がしますが結局僕はGoogleドライブしか使ってないのです。OS間の変なしがらみなくつかうにはこれ一択な気がするのですよ。ちゃんと他のサービス有効利用する方法を探さないとなー……。一応、Yahooのやつはフォント置場として使ってます。他はまだうまく使えてない……。

まあ、そういうのはどうでもいいですね。


そんなわけで今日はGAS(Google Apps Script)を使ってドライブ整理などをしてみようと思います。放っておくと容量がアホみたいに増えるので整理しないとなってなったのです。んで削除するだけなら「ゴミ箱にぽぽーい」でいいんですけども、ゴミ箱にフォルダいれたりして、いざ利用すると復元しないとだめだったりで面倒くさいんですよ。なのでいつも「一時保存」ってフォルダに適当なデータを入れてるんですね。

f:id:andron:20190915143828p:plain
んで一時保存フォルダなんですが僕は面倒くさがりなんで作っても消さないのですよ。なのでどんどんここにデータが溜まっていくわけです。なので、それを解消するために今日はそのフォルダの中身を削除するスクリプトを作ります。


んで、作った。

// 親フォルダ内のすべてのデータを削除する
function deleteAllFile() {
  var FOLDER_ID = 'あなたのフォルダID';

  var folder = DriveApp.getFolderById(FOLDER_ID);
 Logger.log(folder.getName()+"内のデータを削除します");
  var files = folder.getFiles();
  var folders = folder.getFolders();
  var count = 0;

  // 指定したフォルダIDのフォルダ内のファイルをすべて削除
  while(files.hasNext()){
    count++;
    var buff = files.next();
    var fileId = buff.getId();
    Logger.log(fileId);
    var file = DriveApp.getFileById(fileId);
    folder.removeFile(file);
  }
  Logger.log(count+"個のファイルを削除しました。");

  // 指定したフォルダIDのフォルダ内のフォルダをすべて削除
  count = 0;
  while(folders.hasNext()){
    count++;
    var buff = folders.next();
    var folderId = buff.getId();
    var childfolder = DriveApp.getFolderById(folderId);
    childfolder.setTrashed(true);    
  }
  Logger.log(count+"個のフォルダを削除しました。"); 
}

ファイルとフォルダの扱いが別々になってしまった……。あとはトリガー使って回してやれば勝手に消えてくれる便利な一時フォルダの完成です。ちなみに、こいつがフォルダIDになるとのことです。
https://drive.google.com/drive/folders/****

実行結果

[*** JST] 一時保存内のデータを削除します
[*** JST] 1個のファイルを削除しました。
[*** JST] 2個のフォルダを削除しました。

実行するとこんな感じに削除してくれました。


参考
Class DriveApp  |  Apps Script  |  Google Developers
removeなんとかってついているところがお世話になった。



おわり