SharePoint内のフォルダとファイルをExcelに一覧にする
解決できる課題
SharePointのフォルダが整理されておらず、ファイルを探す手間が発生していませんか? ・ファイルの保存に規則性がない ・SharePointを整理する時間がない ・Teamsに添付したファイルがSharePointに溜まっている このレシピを使い、SharePointのファイル整理を自動化します(再帰的に処理できないので、全てのファイルは不可です)。
完成イメージ

必要なもの
SharePoint コネクタ
Excel コネクタ
作り方
SharePointを整理の対象にします。
どのファイルがあるのか、いつ変更されたのかをExcelに一覧にし、台帳を作成します。
OneDrive版もあります。
- 1. トリガー「フローを手動でトリガーする」を設定
インスタントフローを使い、任意のタイミングでSharePointを整理します。
スケジュールフローによる定期実行も可能です。

- 2. アクション「フォルダーの一覧」を設定
[サイトのアドレス]と[ファイル識別子]は、整理の対象を選択します。
なお、前述の通り、この処理は再帰的に処理できないため、全てのフォルダ内のファイル取得はできません

- 3. アクション「表に行を追加」を設定
[場所]と[ドキュメントライブラリ]は任意で、[ファイル]と[テーブル]は台帳用に作成したExcelとテーブルを選択します。
詳細パラメーターから、テーブルで用意した項目を選択します。
基本的にはOneDriveのリスト化アクションと同じ値を選択できますが、少しだけ差異があります。
※例えば、変更日は「LastModified」で可能だが、変更者は対応していないなど

- 5. 動作確認
下図のようなSharePointの状態を想定します。

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

- 4. なぜ再帰的に処理できないか
OneDriveのレシピと同じ理由により、再帰的に処理できません。
フォルダの判別には「IsFolder」を使用できますが、その後の処理で404エラーが発生するためです。
ステップ2(一覧取得)で取得できる値は、下記の通りです。
※実際に、動作確認で見たExcel台帳の添付図にもフォルダ判別には「TRUE」が入っています。
{
"Id": " 省略 ",
"Name": "test",
"DisplayName": "test",
"Path": "/Shared Documents/検証チャネル/test",
"LastModified": "0001-01-01T00:00:00",
"Size": 0,
"IsFolder": true
}
再帰的な処理のエラー図です。

以降は、エラーになったアクション「フォルダーの一覧 1」から得られる入力と出力です。
入力は「/Shared Documents/検証チャネル/test」が設定されているのが分かります。
{
"host": {
"connectionReferenceName": "shared_sharepointonline",
"operationId": "ListFolder"
},
"parameters": {
"dataset": " 省略 ",
"id": "/Shared Documents/検証チャネル/test"
}
}
ですが、出力では404エラーになり、エラーとなっています。
{
"statusCode": 404,
"headers": {
省略
},
"body": {
"error": {
"code": 404,
"source": " 省略 ",
"clientRequestId": "5f27d5fc-49a5-4ee9-850c-400b58b4bbc2",
"message": "The response is not in a JSON format.",
"innerError": "The resource you are looking for has been removed, had its name changed, or is temporarily unavailable."
}
}
}
OneDriveのレシピでも説明しましたが、これはPower Automateではよくあることです。
一覧などの取得にはフォルダ名やパスを識別子として設定しますが、フローでの取得値が必ず再利用できるわけではありません。