GoogleドライブのルートフォルダにGoogle Sheetsのファイルがたくさんあるのを自動でなんとかしたい

Google Sheets は便利。ただ新規作成するとGoogleドライブのルートフォルダにファイルができてしまう。ルートフォルダにファイルが溜まっているのは気持ち悪いので自動でなんとかしたい。

Google Apps Script(GAS)を使って、定期的にルートフォルダの整理をする。

Apps Script – Google Apps Script

「新しいプロジェクト」から新しいプロジェクトを作る。

「エディタ」で以下ようなコードを書く。

// Google Drive のルートフォルダを整理する

function myFunction() {
  const dryRun = false;

  // https://developers.google.com/apps-script/reference/base/mime-type
  archiveSheets(MimeType.GOOGLE_SHEETS, 'Google Sheets', dryRun);
  archiveSheets(MimeType.MICROSOFT_EXCEL, 'Google Sheets', dryRun);
  archiveSheets(MimeType.CSV, 'CSV', dryRun);
  archiveSheets('text/tab-separated-values', 'CSV', dryRun);
}

function archiveSheets(type, folderName, dryRun) {
  if (dryRun) {
    Logger.log('executing as a dry run')
  }
  const root = DriveApp.getRootFolder()
  
  const sheets = root.getFilesByType(type)
  if (!sheets.hasNext()) {
    return;
  }

  const dirIterator = root.getFoldersByName(folderName);
  if (!dirIterator.hasNext()) {
    return;
  }
  const archiveDir = dirIterator.next();


  var i = 0;
  while (sheets.hasNext()) {
    var file = sheets.next();
    Logger.log(file.getName());
    if (!dryRun) {
      file.moveTo(archiveDir)
      }
     i++;   
  }
  Logger.log(type + ' moved to ' + folderName + ' successfully');
  Logger.log(i);
}



エディタで実行すると権限が必要だと言われるので、権限を付与する。

「トリガー」で定期実行するトリガーを追加する。日付ベースで例えば毎週月曜日の午前10時〜11時とか。

これでルートフォルダがきれいになって、手動で整理する手間が省けて嬉しい。