PowerAutomateのワークフローからSharePoint上のファイルを操作する際、しばしば利用することになるのが「ファイル メタデータの取得」アクションです。
この「ファイル メタデータの取得」アクションはSharePointサイト上のファイルを指し示す識別子(Identifier)を引数にして、ファイルの表示名その他各種のメタデータを取得するものです。
今回はそのアクションの利用中に起きた問題のトラブルシューティングです。
Problem
「ファイル メタデータの取得」を利用してファイルのメタデータを取得しているワークフローがあり、
あるファイルについては問題なく動いていたのですが、特定のファイルについてはエラーになってしまいました。
引数に指定している識別子はエンコーディング済みのものなので、不正な文字の混入が原因ではないと判断しました。
エラーのステータスコードは400。
メッセージは「Bad Request - Invalid URL」。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Bad Request</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Bad Request - Invalid URL</h2>
<hr><p>HTTP Error 400. The request URL is invalid.</p>
</BODY></HTML>
{
"statusCode": 400,
"headers": {
"Connection": "close",
"Date": "Thu, 14 Jul 2022 06:56:00 GMT",
"Content-Length": "324",
"Content-Type": "text/html; charset=us-ascii"
},
"body": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\"http://www.w3.org/TR/html4/strict.dtd\">\r\n<HTML><HEAD><TITLE>Bad Request</TITLE>\r\n<META HTTP-EQUIV=\"Content-Type\" Content=\"text/html; charset=us-ascii\"></HEAD>\r\n<BODY><h2>Bad Request - Invalid URL</h2>\r\n<hr><p>HTTP Error 400. The request URL is invalid.</p>\r\n</BODY></HTML>\r\n"
}
Solution
この問題はファイルの識別子(Identifier)の文字数が一定数以上になると起きる問題のようです。
別のアクションについて同様の問題が発生したことを報告してくださっている記事があります。
実際に問題になった識別子とそれ以外の識別子を比べるとたしかに文字数が異なっています:
この問題の対策としては:
- 「パスによるファイル メタデータの取得」アクションに差し替える
- ファイル名を短くする(ファイル名を短くすると識別子も短くなる)
今回は1つ目を採用。
「パスによるファイル メタデータの取得」アクションを利用するようにワークフローを修正してエラーを解消させました。