Power Automateでフォルダ内のファイル全てを別フォルダにコピーする方法【SharePoint/Teams】

Power Automate

本記事では、Power AutomateでSharePointフォルダ内のファイル全てを別フォルダにコピーする方法を解説します。バックアップ作業を自動化したいという方や、大量のファイルを別フォルダに移動させたいという方におすすめの記事となっています。

※Power Automate for Desktopに関する内容ではありません

前提

今回操作する対象は、SharePointのフォルダとなります。SharePointはマイクロソフト社のファイル共有ツールで、Microsoft365およびOffice365のサービスのひとつです。

Teamsを使っている方は、Teams上でファイルを管理しているという方もいらっしゃるかと思います。実は、TeamsとSharePointは連携しており、どちらからでもファイルにアクセスすることができます。

Teamsでファイル管理をしている方も多いと思うので、そのような方にとっても有益な内容かと思います。

Power Automateフローの作成

Web版のPower Automateを開きます。

URL: https://make.powerautomate.com/ (別タブで開きます)

左側のメニュー一覧から「作成」を選択します。

フローの種類を選びます。

フローの種類を選択する

ご自身の目的に応じてフローの種類を選びます。本記事ではインスタントクラウドフローで作成します。

フローの種類概要
自動化したクラウドフロー指定されたイベントによりフローが実行されます。
例)フォルダにファイルが追加されたら実行
インスタント クラウド フロー手動でフローを実行します。
自分の好きなタイミングで実行したい場合はこれ。
スケジュール済みクラウド フロー指定した日時、間隔でフローが実行されます。
例)月初にバックアップを実行

フロー名を入力し、「手動でフローをトリガーします」にチェックして「作成」を押します。

空のフローが作成されますので、ここに処理を追加していきます。

「フォルダの一覧」アクションを追加

「フォルダの一覧」アクションを使って、フォルダ内のファイル一覧を取得します。このアクションによって、ファイル一覧をリストとして扱うことができるようになります。

「新しいステップ」を押します。

sharepointのフォルダを取得するので、検索窓に「sharepoint」と入力し、「フォルダの一覧」アクションを選択します。

設定内容

以下のように設定します。

項目名設定値
サイトのアドレスsharepointのサイト(Teamsでいう「チーム」)
※プルダウンをクリックすると候補が表示されます
ファイル識別子対象のフォルダ
操作ID:ListFolder

「ファイル識別子」については、いろんなファイル名が候補に表示されて分かりにくいので、実際のフォルダを確認すると良いかと思います。(https://login.microsoftonline.com/ から確認できます)

ループ処理の追加

「フォルダの一覧」アクションで取得したファイル一覧をループで回して1件ずつ指定フォルダへコピーします。

プログラミングでいうforeachやfor-in文のように、オブジェクトの要素分ループを回すイメージです。

「それぞれに適用する」を選択します。(以前は「apply to each」という名前で出てきた気がするのですが、日本語化が進んでいるのかヒットせず・・・)

設定内容

「body」を選択します。

一覧ではbodyと表示されていますが、設定後は「本文」と表示されます。中身は同じなので問題ありません。

参考:https://learn.microsoft.com/ja-jp/power-automate/apply-to-each

「ファイルのコピー」アクションを追加

「アクションの追加」を押下し、「ファイルのコピー」を選択します。

設定内容

以下のように設定します。

項目名設定値
現在のサイト アドレスコピー元sharepointのサイト(Teamsでいう「チーム」)
※プルダウンをクリックすると候補が表示されます
コピーするファイルPath
送信先サイト アドレスコピー先sharepointのサイト(Teamsでいう「チーム」)
※プルダウンをクリックすると候補が表示されます
インストール先フォルダーコピー先フォルダ
別のファイルが既に存在する場合Copy with a new name(新しいファイルとして格納する)
Fail this action(なにもせず、実行結果はエラーにする)
Replace(ファイルを置き換える)
操作ID:CopyFileAsync

公式ドキュメントでは、コピーするファイルにファイル識別子をセットすると記載されています。「識別子」というのは、対象を一つに特定するために用いられるもので、IDやファイル名、電話番号などのことです。ファイルを一意に特定できればよいので、PathでなくIDなどでも正常に実行されます。

参考:https://learn.microsoft.com/ja-jp/connectors/sharepointonline/

フロー全体図

これでフローは完成です。全体図は以下になります。

フローをテストする

完成したフローをテストしてみます。

フロー編集画面の右上にある「テスト」を押します。手動・自動と選択できますが「手動」でテストします。アクセス許可を求められますので、許可して実行します。

フローが正常に実行されました。なお、ファイルのコピーはファイル数・サイズによって時間がかかる場合があります。

フォルダを確認してみると、全てのファイルがコピーされていることを確認できました。

まとめ

今回は、Power AutomateでSharePointフォルダ内のファイル全てを別フォルダにコピーする方法を解説しました。

フォルダ内のファイルを固定のファイル名で操作しようとすると、ファイル名が変わったときやファイルが増えたときに対応が面倒です。ファイルのコンテンツを動的に取得することで、柔軟に対応することができます。

今回少し久しぶりにPower Automateを触ったのですが、日本語化したアクション名が増えたような!?逆に探しづらかったです。こういうツールとかサービスって、少し触ってないうちに変わっていきますよね・・・(変化についていけない系アラサー女)。。。

chaso

文系出身、数字が苦手な平凡主婦。塾講師、大手企業SE、不動産事務、Webライター、QAエンジニアを経て現在RPAエンジニアとして働いています。機械音痴だけど効率化や自動化をこよなく愛しています!お仕事の依頼・ご相談は問い合わせよりお願いいたします♪

chasoをフォローする

コメント

タイトルとURLをコピーしました