GAS で Google Drive 内の隠しファイル(ドットではじまるやつ)を全部消す
色々あって Google Drive 内で Mac の隠しファイル汚染がひどいことになっていた。
ほぼ全てのフォルダがこんな感じなのでどうにかしたい。楽な手段を調べたけど諦めが発生したので GAS を書いた。GAS、スポ根とか精神論とかそっち系な気がしてきた…
function myFunction() { var base_folder_id = "検索対象とするフォルダのID"; var parent_folder = DriveApp.getFolderById(base_folder_id); removeHiddenFiles(parent_folder); } function removeHiddenFiles(folder) { var folders = folder.getFolders(); var files = folder.getFiles(); while (files.hasNext()) { var _file = files.next(); var _file_name = _file.getName(); if (_file_name.indexOf(".") == 0) { Logger.log("ファイル名: " + _file.getName()); // ゴミ箱に移動する _file.setTrashed(true); } } while (folders.hasNext()) { var _folder = folders.next(); // フォルダを再帰的に掘っていく removeHiddenFiles(_folder); } }
いい感じ。Google App Script の仕様上 6 分でタイムアウトするらしいのでフォルダの深掘りには注意。あと setTrashed はファイルのオーナー権持ってないと効果がないっぽいので、共有フォルダとかでなんとかしたい場合は removeFile あたりを使うと良さそうです(未検証)。
https://developers.google.com/apps-script/reference/drive/folder#removeFile(File)