以前の記事で、ファイル内のすべてのファイルをコピーする方法を解説しました。
ただ、ファイルが大量にある中の指定したファイルだけコピーしたい、サイズが大きいファイルがあるから特定のファイルだけ選択したい、という場合もあるかと思います。
そこで今回は、Power Automateで特定の文字を含むファイルを取得し、移動やコピーする方法を解説します。
前提
以前の記事でも話したとおり、SharePointというのはMicrosoft365およびOffice365のサービスです。Teamsを使っている人であればおそらく使っていると思います。Teamsのチャネル内に、「ファイル」タブがありますよね。
ファイルタブにはファイルをアップロードできます。実はこのファイルは、SharePointとも連携しており、どちらからでもアクセスできるようになっています。
Power Automateフローの作成
Power Automateでフローを作成します。
以下記事の、「2.Power Automate フローの作成」~「ループ処理の追加」までを行います。
ここまでで、以下のようなフローができたかと思います。
コピー元となるフォルダを取得して、その中に入っているファイルを「Apply to each(ループ)」で一つずつ見ていきます。前回記事(フォルダ内のファイルを全てコピー)では、このまま一つずつコピーしていきましたが、今回はここに条件を追加します。
条件(IF文)の追加
フォルダ内にあるファイルのうち、ファイル名に「重要」と入っているものだけコピーしたい場合は、条件を追加して行います。プログラミングでいうif文のようなものです。
Apply to each内にある「アクションの追加」を押します。
「コントロール」を押すか、検索窓に「条件」と入力し、「条件」を追加します。
すると、以下のように表示されます。
ちょっと見慣れない表示かもしれませんがやること自体は簡単ですので、一つずつ設定していきましょう。
条件の設定
「条件」というのは、例えば以下のようなかんじです。
【 ファイル名に「重要」と含まれている? 】
- 「はい」→コピーする
- 「いいえ」→コピーしない
以降の「はい」「いいえ」を決める条件となるのが「条件」です。
「値の選択」と表示されているテキストボックスにカーソルを当てると、候補が出てきますので「Name」を選択します。Nameとはフォルダ名のことです。
次に、プルダウンから設定したい条件を選びます。
条件 | 例 |
---|---|
次の値に等しい | ファイル名が「重要_xxx.txt」に等しい |
次の値を含む | ファイル名に「重要」を含む →「重要_xxx.txt」も「【重要】yyy.xlsx」もあてはまる |
次の値を含まない | ファイル名に「重要」を含まない |
次の値に等しくない | ファイル名が「重要_xxx.txt」でない →「【重要】yyy.xlsx」はあてはまらない |
次のものではじまる | ファイル名が「重要」から始まる →「【重要】yyy.xlsx」はあてはまらない |
次のものではじまらない | ファイル名が「重要」から始まらない →「【重要】yyy.xlsx」はあてはまる |
次のもので終わる | ファイル名が「xlsx」で終わる →「【重要】yyy.xlsx」はあてはまる |
次のもので終わらない | ファイル名が「xlsx」で終わらない →「重要_xxx.txt」はあてはまる |
なお、「次の値より大きい」「次の値以上」「次の値未満」「次の値以下」は文字列との比較には使えません(数値や日付の比較に使います)。
今回は、ファイル名に「重要」を含むものを取得したいので、以下のように設定します。
項目名 | 設定値 |
---|---|
値の選択 | Name ※テキストボックスをクリックすると候補が表示されます |
プルダウン | 次の値を含む |
値の選択 | 重要 |
条件に設定できる項目
ファイル名のほかにも、条件に設定できる項目がいくつかあります。以下に、よく使われるものを紹介します。
項目名 | 設定値 |
---|---|
id | ファイルの一意のID |
Name | ファイル名 |
DisplayName | Nameと同値 |
LastModified | ファイルの最終更新日 (基準となる日付と比較して使います) |
MediaType | ファイルの種類(Excel、Word、txtなど) |
ETag | ファイルバージョンを特定するための識別子 |
Size | ファイルサイズ |
「ファイルのコピー」アクションは、けっこう時間がかかります。なので、フォルダにサイズの大きなファイルが含まれる場合、「ファイルサイズが一定のサイズ以下の場合」のように制限を設けておくと安心です。
条件にあてはまる場合の処理
条件にあてはまる場合、ファイルをコピーします。
「はいの場合」のアクションの追加を押します。
「ファイルのコピー」を選択します。
以下のように設定します。
項目名 | 設定値 |
---|---|
現在のサイト アドレス | コピー元sharepointのサイト(Teamsでいう「チーム」) ※プルダウンをクリックすると候補が表示されます |
コピーするファイル | id |
送信先サイト アドレス | コピー先sharepointのサイト(Teamsでいう「チーム」) ※プルダウンをクリックすると候補が表示されます |
インストール先フォルダー | コピー先フォルダ |
別のファイルが既に存在する場合 | Copy with a new name(新しいファイルとして格納する) Fail this action(なにもせず、実行結果はエラーにする) Replace(ファイルを置き換える) |
コピーするファイルは、ファイルを一意に特定できればPathとかでも大丈夫です。
条件が複数ある場合
条件が複数ある場合は、条件を追加して先ほどと同様に内容を設定します。
追加>「行の追加」を押します。
行が追加されますので、条件を設定します。
And(かつ)
プルダウンに「And」とありますが、この場合は「ファイル名に「重要」を含む、かつ、ファイル名に「議事録」を含む」ものが対象となります。
例)【重要】202307議事録.txt
Or(または)
「または」の場合、どちらかの条件を満たすものが対象となります。
例)とても重要なファイル.xlsx、〇〇プロジェクト議事録.txt など
条件にあてはまらない場合
条件にあてはまらない(ファイル名に特定の文字が含まれない)場合は、ファイルをコピーしないのでなにも追加しないでOKです。
フロー全体図
これでフローは完成です。全体図は以下になります。
フローをテストする
完成したフローをテストしてみます。
フロー編集画面の右上にある「テスト」を押します。手動・自動と選択できますが「手動」でテストします。アクセス許可を求められますので、許可して実行します。
フローが正常に実行されました。なお、ファイルのコピーはファイル数・サイズによって時間がかかる場合があります。
ファイル名に「重要」を含むファイルのみコピーされていることを確認できました。
まとめ
今回は、Power Automateで特定の文字を含むファイルを取得し、移動やコピーする方法を解説しました。特定のファイルのみコピーできるので、色々ごっちゃに入っているフォルダ内からコピーする際は処理速度向上を実感できるはずです。
また、SharePoint(=Teams)では、ファイルをアップロードしたタイミングでファイルの最終更新日が設定されます。そのため、1か月ごとにバックアップを取る場合は、ファイル名だけでなく、ファイルの最終更新日が1か月以内のものを対象にするとよりコンパクトな処理になるかと思います。
今後もPower Automateやその他RPAツールなど、技術ネタを更新していきます。「こんな処理を実装したいけど、やり方がわからない・・・」などお困りの場合は、お気軽にコメントや問い合わせいただけると幸いです。
コメント