/# F_Name_1=常に処理時に空にしたいフォルダの絶対パス F_Name_2=OneDrive上に作成したゴミ箱フォルダの絶対パス#/ SET F_Name_1 TO $'''空にするフォルダの絶対パス''' SET F_Name_2 TO $'''OneDriveのゴミ箱の絶対パス''' BLOCK Get_Err ON BLOCK ERROR all END Folder.GetFiles Folder: F_Name_1 FileFilter: $'''*''' IncludeSubfolders: False FailOnAccessDenied: True SortBy1: Folder.SortBy.NoSort SortDescending1: False SortBy2: Folder.SortBy.NoSort SortDescending2: False SortBy3: Folder.SortBy.NoSort SortDescending3: False Files=> Files LOOP FOREACH CurrentItem IN Files File.Move Files: CurrentItem Destination: F_Name_2 IfFileExists: File.IfExists.Overwrite END Folder.GetSubfolders Folder: F_Name_1 FolderFilter: $'''*''' IncludeSubfolders: False FailOnAccessDenied: True SortBy1: Folder.SortBy.NoSort SortDescending1: False SortBy2: Folder.SortBy.NoSort SortDescending2: False SortBy3: Folder.SortBy.NoSort SortDescending3: False Subfolders=> Folders LOOP FOREACH CurrentItem IN Folders Folder.Move Folder: CurrentItem Destination: F_Name_2 END Folder.Empty Folder: F_Name_2 END ERROR => LastError IF LastError <> $'''エラーはありません''' THEN Display.ShowMessageDialog.ShowMessage Title: $'''PowerAutomateDesktop''' Message: $'''ファイル整理が失敗しました''' Icon: Display.Icon.ErrorIcon Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: True END
フローの最初にある変数の修正をしてください
不要ファイルは毎日発生します
本当の意味での不要ファイルというものは存在せず、その内容自体は機密事項であったり個人情報があって他人に知られるのは困ってしまう情報が含まれたファイルがほとんどです
会社のセキュリティルールによっては定期的に不要ファイルの削除を行うようになっていることもあると思います
しかし、ゴミ箱に放り込んだファイルを完全に削除する操作は少し躊躇することが多々あります
なぜなら完全削除した後に、やっぱりあのファイル必要だった!とか再確認だけしたかった!とか一時的でも復活して欲しいことが懸念としてあるからです
これは結構ネックに感じてしまう部分です
かといって長期間ゴミ箱を空にせずにおくこともルール違反になってしまうし
ゴミ箱の自動削除設定で削除すると復元が大変です
要するにゴミ箱は常に空にしつつ、削除したファイルは一定期間は復元出来る状態にしておきたい、というすごくわがままな考えを抱くのが自分だけでしょうか!?
いえ、これがあるとめっちゃ出遅れてもう無くなってしまったと諦めていた人気商品がまだあった時の感動と同義です!
この記事の方法で、会社の情シスの人や上司にはちゃんと空になったゴミ箱をこれ見よがしに見せつけてください
後述の方法で、一定期間は復元可能なので毎日の削除作業も気楽なもんですよ!
OneDriveを活用する
結果から言いますと、OneDrive上で削除を行うという方法になります
OneDriveは削除されたデータは、通常アカウントでは30日・職場などのアカウント等の場合は93日(管理者で変更可能)の間は復元が可能な状態でゴミ箱に格納されます
ゴミ箱からは削除しておいて、こちらでバックアップを取っちゃおうというものです
OneDriveのクラウド上であれば必要な時に復元するのもデバイスを選ばず行うことが可能なのも今の時代にあっていて良いと思います
しかし、単純にExplorerでOneDriveのファイルを削除してもゴミ箱に行ってしまいますし、削除のためにいちいちWebアプリを起動するのも面倒です
そこでPowerAutomateDesktopを活用します
今回のフローでは同時に不要ファイルがたまりやすいダウンロードフォルダも空にするようなフローにしています
いや、ダウンロードフォルダは空にせんでええですよ
余計なことまでしないで下さいという人は下のコードだけで良くなります
Folder.Empty Folder: $'''OneDrive上に作成したゴミ箱フォルダの絶対パス'''
OneDriveの指定フォルダを空にするアクションです
ただこんだけになります
いや、やっぱりダウンロードフォルダも空にしたいねん、という人は引き続き記事確認を行ってください
フローの流れについて
フローの流れですが、途中に幾度か対象フォルダのパスが出てくるので最初に変数でダウンロードフォルダとゴミ箱フォルダの絶対パスを変数に取得します
これ以降は変数で対象フォルダの指定を行います
4行目からのエラー処理です
14行目までを包括する形に設定しています
これはファイルの移動や削除の処理がファイルの編集権限であったり、使用中による削除不可という状況が往々にして発生することを考慮して後続のエラーメッセージ用に設置しています
この4行目のアクションではエラーが発生した場合は処理を継続してかつ14行目から実行するようにしているため後続処理が実行されます
ちなみに処理的には移動できなかったとか、削除できなかったとか、フォルダパス構成が違っていたとかの原因についてはどうでも良いと考えます
単純に削除したつもりがされていなかった状況を回避できれば十分なので
後続でエラー内容の判定までは行っていません
ダウンロードフォルダにあるファイルを全てゴミ箱フォルダに移動させます
ちなみにファイルとフォルダを同時に移動させるアクションが無いので、ファイルとフォルダをそれぞれで行う必要があります
まずはファイルの移動を行っています
次にフォルダの移動も行います
中のデータはそのまま移動できるので再帰処理は不要です
ここがゴミ箱フォルダを空にするアクションです
前述していますが、結局ここだけでもほぼ目的を達成できます
ここまでのファイル操作でエラーが発生しているかどうかを判定して
発生していれば、15行目でエラー情報の取得を行います
その結果が「エラーではありません」になっていなければなんらかのエラーが発生していると判断が出来ます
その場合にのみメッセージを表示しています
処理の目的から完了のメッセージは不要と思います
欲しい場合はこの辺を修正してください
ゴミ箱は空っぽの状態でバックアップ体制取れるなんて、なんて素晴らしいの!
というお声にお応えしますが残念なことに、無償版では自動実行ができません
なのでAutomateDesktopを起動して、フローを手動実行する必要があります
はい、最後の最後に爆弾です
自動的に出来ひんのんか~いって声が聞こえてきそうです