本記事では、Power Automate DesktopでSharePointフォルダ内のファイルを別フォルダにコピーする方法を解説します。バックアップ作業を楽に行いたいという方や、大量のファイルを別フォルダに移動させたいという方におすすめの記事となっています。
※WEB版のPower Automateの記事ではありません。
Web版でファイルをバックアップする手順はこちらで解説しています。
ファイルコピーのフロー作成手順
基本的なファイルコピーの手順は以下のとおりです。
- 指定したフォルダー内のファイルを取得
- 取得したファイルを指定したフォルダへコピー
フォルダー内のファイルを取得
「フォルダー内のファイルを取得」をフローエリアにドラッグアンドドロップして追加します。
ポップアップで以下が表示されますので、「フォルダー」のテキストボックス右側にあるフォルダアイコンを押します。
コピー元フォルダを選んで、右下のOKを押します。画面によってはOKボタンが表示しきれていないことがあるので、その場合はダイアログを少し動かしてみてください。
ファイルフィルター(取得条件)
「ファイル フィルター」には、ワイルドカードを指定します。ワイルドカードというのは、ファイル名を検索するときに用いられる記号です。
デフォルトでは「*」が指定されており、これはすべてのファイルを取得します。もし、「ファイル名に『議事録』とついているフォルダだけコピーしたい」「Excelファイルだけコピーしたい」という場合には、このファイルフィルターにワイルドカードを指定します。
ワイルドカード | 意味 | 例 |
---|---|---|
* | すべてのファイル | |
テスト* | 「テスト」からはじまるファイル | テスト0721.txt テストケース.xlsx |
*テスト | 「テスト」でおわるファイル | 0712テスト.txt システムテスト.xlsx |
*テスト* | 「テスト」を含むファイル | 結合テスト仕様書.xlsx 〇〇システム_テストケース.txt |
*.xlsx | Excelファイル | |
テスト.txt | ファイル名が「テスト.txt」のファイル | ※完全一致 |
テスト.* | ファイル名が「テスト.txt」、 「テスト.xlsx」等のファイル |
条件を2つ以上設定する場合
条件を2つ以上設定する場合には、;(セミコロン)で区切ります。
以下は、拡張子が「.txt」「.exe」のときだけ取得する設定です。
*.txt;*.exe
取得したファイルを指定フォルダにコピー
次に、先ほど追加したアクションの下に、「ファイルのコピー」アクションを追加します。以下のようなポップアップが出るので、「コピーするファイル」の右のほうにある「{x}」をおします。
候補に「Files」と表示されますので、それを選択します。
「宛先フォルダー」の右側にあるファイルアイコンを押し、コピー先のディレクトリと選択して保存します。
「ファイルが存在する場合」では、同じファイルが既に存在する場合の操作を設定します。デフォルトでは「何もしない(Windowsのファイル操作でいう『スキップ』」になっています。「上書き」を選択すると、同じファイルがあった場合上書きされます。
バックアップ用フォルダを作成してからコピーしたい場合
毎月バックアップを取りたいので、月ごとにフォルダを分けたいという場合もあるかと思います。そのような場合は、ファイルコピーのタイミングで新しくフォルダを作成するようにします。
現在の日時を取得
新しく作成するフォルダ名は、「20230721_backup」のように、日付を入れるようにします。
「現在の日時を取得」アクションをフローの先頭に追加します。何も変更せず、保存を押します。
datetimeをテキストに変換
次に、「datetimeをテキストに変換」を追加します。
そのまま(標準)だと、「2023/07/21」という形式に変換されます。しかし、「/」はフォルダ名に使うことができずフォルダ作成に失敗してしまうので、以下のように変更します。
項目 | 設定内容 | 備考 |
---|---|---|
使用する形式 | カスタム | |
カスタム形式 | yyyyMMdd | yyyy:西暦(yyなら下2桁) MM:月(yなら0なし) dd:日(dなら0なし) |
yyyyMMdd以外にも、yy-MM-dd、yyyy_MMなど、通常のWindowsのフォルダ作成で使える記号は使うことができます。
フォルダーの作成
フォルダーを作成します。フォルダ名は先ほど作成した文字列を設定します。
あとは先ほどのファイルコピーと同じ手順です。
ファイルを圧縮してからコピーしたい場合
ファイルを圧縮してバックアップしたい場合は、以下のようなフローになります。
ファイルのバックアップ時に、ファイルを圧縮してバックアップしたいという場合の方法です。
ZIPファイル
現在の日時を取得・datetimeをテキストに変換までは先ほどの手順と同じです。
「ZIPファイル」アクションで、現在日時のテキストを使用してZIPファイル名を指定します。
今回の例では、「20230721_backup.zip」としたいので、以下のようになります。ファイルパスはフルパスで、「.zip」まで書きます。
C:\backup先\%FormattedDateTime%_backup.zip
指定のファイルサイズより小さいときだけコピーしたい場合
いろんなファイルが入っているフォルダでは、すべてのファイルを何の条件も指定せずコピーすると、大きなサイズのファイルが紛れていて容量を圧迫してしまう可能性があります。
このような場合には、ファイルサイズが指定のサイズよりも小さいときだけコピーするようにすると安心です。
For eachでフォルダ内のファイル一つひとつをループで見ていき、もしファイルサイズが指定の値より大きかったらコピーしないようにします。上記の例では、ファイルサイズが5KBより小さい場合にファイルバックアップをするフローになっています。
ファイルサイズの判定は「.Size」で行う
ループで回したときの要素「CurrentItem」には、ファイルの情報(ファイル名、ファイルサイズなど)が格納されています。このなかからファイルサイズ情報を取り出すには、「.Size」を使います。ファイルサイズはバイトで取り出されます。
項目 | 設定内容 |
---|---|
最初のオペランド | %CurrentItem.Size% |
演算子 | より小さい(<) |
2番目のオペランド | ファイルサイズの上限値(単位:バイト) |
WindowsPCではファイルサイズはKBで表示されていますので、そこに×1000するとバイトの値になります。
バックアップを定期自動実行したい場合
ファイルのバックアップを定期的に自動実行したい場合、Power Automate Desktopには定期実行の機能は存在しませんのでWindowsでは「タスクスケジューラ」を使います。
詳しくは以下記事をご参照ください。
Power Automateでファイルバックアップを行いたい場合
Power Automate Desktopではなく、Web版のPower Automateでファイルコピー(バックアップ)をしたい場合は、以下記事をご参照ください。
まとめ
今回は、Power Automate Desktopでファイルをコピー(バックアップ)する方法について解説しました。
大量にファイルがある場合はバックアップひとつ行うにもけっこう大変だったりするので、定期的に行うめんどうさい作業はなるべく楽にやりたいものです。
今後も、Power Automateやその他RPAツール、自動化のアイディアを更新していきます!
コメント