ルドルフもわたるふもいろいろあってな

Microsoft 365、Power Platform、PowerShellについて調べたことや検証したことなどを投稿します。技術の話は面白い。

【TIPS】【Power Automate】「複数行テキスト」なのに255文字以上の入力がエラーになる現象を回避する

SharePoint」>「項目の作成」アクションを使ってSharePointリストにアイテムを投稿することができます。この「項目の作成」アクションを使っていて掲題のようなエラーに遭遇することがあります。

このエラーの原因は気付きづらいと思います。でも知っているとすぐに解決することができます。今回はそんなTIPSです。

まずはエラーを再現してみる

SharePointサイトにリストを作ります。
リストに列をひとつ作ります。列の種類は「1行テキスト」にします。

SharePointにリストアイテムを投稿するフローを作ります。
「データ操作」>「作成」アクションで255文字を超える文字列を定義します。この例では300文字の「a」を用意しました。
SharePoint」>「項目の作成」アクションで、先ほど作成した列にこの300文字の「a」の変数を入力します。

フローを実行します。エラーが発生しました。

発生したエラーのメッセージは以下の通りです。
これは「1行テキスト」に入力できる文字列の最大数である255文字を超える文字数を入力しようとしたためです。

The API operation 'PostItem' requires the property 'item/OData__x30c6__x30b9__x30c8__x5217_' to be a string of maximum length '255' but is of length '300'.

列の種類を「1行テキスト」から「複数行テキスト」に変更します。
複数行テキストの最大文字数は 63,999文字です。そのため300文字では当然、文字列長のエラーは発生しないはずです。

フローを再実行します。エラーが発生しました。

発生したエラーは先ほどと同じ文字列長のエラーです。

エラーの回避方法

「編集」ボタンをクリックして開きます。

「保存」ボタンをクリックします。

フローを実行します。正常に完了しました。

アイテムがリストに無事登録できました。

なぜ「複数行テキスト」に変更したのに文字列長のエラーが起きたのか

結論から言うとエラーの発生原因はSharePoint側ではなくフロー側にあります。列の種類が変更されたことをフローが認識していなためにエラーが発生した状況です。

「項目の作成」アクションは対象のリストを選択した際に列の情報を自動で認識します。

フローを保存したあとに「項目の作成」アクションの参照先であるリストの設定を変えてもフローはそれを自動で認識できません。

フローを保存したあとにリストの列設定を「一行テキスト」から「複数行テキスト」に変えたもののフローがそれを認識できず、

フロー「その列は"1行テキスト"だから255文字以上は入力できません。( ゚Д゚)!」
フロー側が出したのが掲題のエラーです。

なぜエラーは回避できたのか

それではなぜフローを再度保存することでエラーが回避されたのでしょうか。それはフローの編集画面が開かれたことで「項目の作成」アクションによって参照先リストの現在の設定が再読み込みされたためです。

この状態でフローを実行したときにはフローはその列が「複数行テキスト」であることを認識しているため、
フロー「その列は"複数行テキスト"だから300文字は問題なく入力できます。( ゚Д゚) OK!」
とフローが正常に実行されたということです。

ちなみに

列の種類が「1行テキスト」である列に対して「項目の作成」アクションを使って255文字を超える文字を入力すると、フローがエラーになり保存に失敗します。

しかしながら、このようにアクションをひとつ挟むことによって保存時のエラーは回避できます。このアクションの組み方でフローの保存時にエラーにならないのは、フローを実行するまで「項目の作成」アクションは"動的コンテンツ"の中身が何かを知らないためです。

フローのこの仕組みを利用してアクションの組み立てかたを工夫することもできます。それについては機会があれば投稿します。


今回は以上です。