Power Automate iconPower Automate お助けレシピ集

OneDrive内のフォルダとファイルをExcelに一覧にする

公開日: 2025-12-13|カテゴリ: ファイル・データ管理|難易度: 初級

解決できる課題

OneDriveの中がごちゃごちゃになっていませんか? ・とりあえずOneDriveにファイルを保存している ・OneDriveの整理が面倒くさい OneDriveの整理を自動化します(ただし、再帰的に処理できないので、全てのファイルは不可です)。

完成イメージ

Flowchart for OneDrive内のフォルダとファイルをExcelに一覧にする

必要なもの

  • OneDrive iconOneDrive コネクタ
  • Excel iconExcel コネクタ

作り方

OneDriveを整理の対象にします。
どのファイルがあるのか、いつ変更されたのかをExcelに一覧にし、台帳を作成します。
SharePoint版もあります。

 

  • 1. トリガー「フローを手動でトリガーする」を設定

気が向いた時にOneDriveの整理を行うので、インスタントフローにします。
もちろん、スケジュールにして定期実行も可能です。
インスタントフローで任意に実行

 

  • 2. アクション「フォルダー内のファイルのリスト」を設定

整理の対象とする[フォルダー]を選択します。
「/」にすると、ルートになります。
 ※ここでの注意点は、この処理は再帰的に処理できないため、全てのフォルダ内のファイル取得はできません 整理するフォルダを選択

 

  • 3. アクション「表に行を追加」を設定

[場所]は「OneDrive for Business」にします。
[ドキュメントライブラリ]は「ドキュメント」を選択します。
[ファイル]と[テーブル]は、台帳用に作成したExcelとテーブルを選択します。
詳細パラメーターから、テーブルで用意した項目を選択します。
「DisplayName」はファイルの表示名、「Path」はファイルまでのパス、ファイルの更新日と更新者も取得可能です。
 ※このアクションを追加すると、自動的にForeachが作成されます(リストには複数のファイル名があるため)
リストの出力先を設定

 

  • 4. 動作確認

下図のようなOneDriveの状態を想定します。 動作確認用のOneDrive

 

一覧を取得し、台帳にしたのが下図です。
Excelで台帳を作成

 

  • 5. なぜ再帰的に処理できないか

再帰的に処理するためには、フォルダを取得し、そのフォルダに対してステップ2(リスト化)を実行すれば良いです。
リストを取得後、まずはそれがフォルダかどうかを判定する必要があり、条件を使います。
具体的には、ステップ2(リスト化)で取得できる値は下記で、条件には「IsFolder」を使用します(true/false)。

{
    "Id": " 省略 ",
    "Name": "Attachments",
    "NameNoExt": "Attachments",
    "DisplayName": "Attachments",
    "Path": "/Attachments",
    "LastModified": "2025-08-16T07:04:57Z",
    "Size": 18155264,
    "MediaType": "application/octet-stream",
    "IsFolder": true,
    "ETag": " 省略 ",
    "LastModifiedBy": " 省略 "
}

 

上記をもとに元のフローを修正し、実行してみます。
条件分岐後にエラー

 

エラーになっているのは、再帰的な処理の中にあるアクション「フォルダー内のファイルのリスト 1」です。
これは、ステップ2で取得したリストの中にあるフォルダに対し、リスト化を実行するものです。
ここで発生したエラーについて、入力と出力を確認してみます。
入力は、正しく「/Attachments」が設定されているのが分かります。

{
    "host": {
        "connectionReferenceName": "shared_onedriveforbusiness",
        "operationId": "ListFolderV2"
    },
    "parameters": {
        "id": "/Attachments"
    }
}

 

ですが、出力では404エラーになり、エラーとなっています。

{
    "statusCode": 404,
    "headers": {
        ここは省略
    },
    "body": {
        "status": 404,
        "message": "Item not found",
        "source": "api.connectorp.svc.ms"
    }
}

 

つまり、正しくパスを指定しても、IDなどの一意な値で指定しないと取得できないものと考えられます。
これはPower Automateではよくあることで、リスト化のアクションは[フォルダー]しか設定できないため、再帰的な取得は不可となります。

関連レシピ

広告