技術情報ブログ
Power Platform
2023.10.04

【Power Automate】concat関数の文字数制限の境界値でエラーを発生させてみた

【Power Automate】concat関数の文字数制限の境界値でエラーを発生させてみた
みやみや

こんにちは、みやみやです。

普段は MaaS 事業のシステム開発や運用周りのマネジメントをしているのですが、部署の業務改善で Power Platform も利用しています

今日はconcat 関数の公式リファレンスをみていて、「この結果の長さは 104,857,600 文字以下にする必要があります。」と記載があり、気になったので、実際には何文字までいけるのかを検証してみました

 

検証方法

検証は下記のパターンで試します

検証用でフローを作りました

検証方法
検証方法

考え方ですが、まず、104,857,600 を 2 で割っていき、割り切れる回数の 22 回をループカウンター、割り切れる数字の 25 を基底となる数字として利用します

2で割った回数
2で割った回数

104,857,600 手前まで元気よく文字を結合していき、そこから 1 文字づつ結合して検証しました

 

検証1. シングルバイトのみのとき

ここでは、シングルバイトは半角文字とします

検証1. シングルバイトのみのとき
シングルバイトのみのとき

シングルバイト 25 文字として0123456789012345678901234を、変数Variable1にセットしています
項目数はlength()を使って確認しています

結論としては、シングルバイトのみで104,857,599文字に達するとエラーが発生しました

 

検証2. マルチバイトのみのとき

マルチバイトのみのとき
マルチバイトのみのとき

マルチバイトで 25 文字として0123456789012345678901234を、変数Variable1にセットしています

シングルバイトと同じく、マルチバイトのみで104,857,599文字に達するとエラーが発生しました

 

検証3. サロゲートペアのみのとき

サロゲートペアについての詳しい説明は他のサイトにお任せして、ここでは「2 バイトの定義で収まらなかった文字を、拡張領域として 4 バイトで表すようにした文字」と捉えます

サロゲートペアのみのとき
サロゲートペアのみのとき

サロゲートペアで 25 文字として `𦀗𦀗𦀗𦀗𦀗𦀗𦀗𦀗𦀗𦀗𥿻𥿻𥿻𥿻𥿻𥿻𥿻𥿻𥿻𥿻𦀌𦀌𦀌𦀌𦀌`を、変数Variable1にセットしました

上記 25 文字をlength()でカウントすると、50と返ってきます

つまり、2023/02/21 現在、PowerAutomate のlength()では、シングルバイトやマルチバイトは 1 文字は1として返し、サロゲートペアでは2と返します[1]

そのことから、ループカウントを他の検証と違い21として、検証を行いましたが、大方の予想通り、サロゲートペアのみでは、52,428,799 文字に達するとエラーが発生しました

 

考察

文字数制限に引っかかることはないと思いますが、制限があるということ、全角と半角に差はないこと、サロゲートペアが含まれるときに文字数カウントが変わることを抑えておきたいです

 

参考

Azure Logic Apps および Power Automate のワークフロー式関数のリファレンス ガイド – concat

miyamiya

みやみや

ビジュアル系プログラマー、ビジュアル系 PM を自称して 20 年近くが経ちました

弊社 MaaS 製品全般で、開発・運用側のマネジメントをしながら、時々開発もしています

シェアする
記事カテゴリ
最新記事
2024.04.17

Power Apps・Power Automateの勉強方法(1)

2024.04.03

非エンジニア【(元)自治体職員】が半年間ローコード開発をしてみたら

2024.03.27

Power Automateのベストプラクティス・アンチパターン(5)【Apply to each×コンカレンシー×変数の設定はNG】

2024.03.20

Power Apps×Teams:Teams上からPower Appsを実行する方法

2024.03.13

Power Apps:SharePointリストと連携したカレンダーアプリを自作してみよう

モデル駆動型アプリPower AppsPower PlatformSharePointExcelPower AutomateC#attributevalidationローコードAngularAccessInfoPathMatTableAngular Materialデータ構造SortByColumns関数TypeScriptHTMLEF CoreマイグレーションFramework CoreAttribute directivesO/Rマッパーazure sql databaseCase式HTTP RequestCSSxUnit.Net Core 3.1VSCode.Net Core Test ExplorerDataverse for Teamsitem関数Google MapsMarker ClustererRANK()関数Dynamics 365 SalesMicrosoft TranslatorマーカークラスタリングライブラリtailwindcssマルチテナントドロップダウンメニューBreakpointObserverメディアクエリスマホPCレスポンシブ入門初心者中級者キャンバスアプリDatePickerDropdownviewビューアクセス制限承認リマインドSetForAllUpdateContextロードマップ技術It情報技術メッセージIDメールfirst()関数nest入れ子動的リストcollectionコレクション複数の添付ファイル承認フローformエクスポートインポートカスタマイズcomponentダイアログコンポーネントdialogTips新機能変数検索Microsoft 365グループセキュリティグループ送信元メールの送信差出人インスタントクラウドフロー自動化したクラウドフロー委任VBAエラーエクセルerror復元restorePower BI個人列ユーザー列SharePoint Onlineリスト非表示アプリ[市民開発者構築自動化したクラウド フローフローの種類インスタント クラウド フロースケジュール済みクラウド フローレスポンシブ レイアウトresponsive layoutデータ行の制限引き継ぎ退職所有者を変更異動LoopMicrosoftdesignJSONデザインtemplateテンプレート運用選択肢列参照列ChatGPTOpenAIオープンAIチャットGPTgalleryギャラリースクロールコンテナショートカットキーshortcut keyconcat関数文字制限フロー実行開発環境環境本番環境ライセンス環境構築手順pipelineCI/CDパイプラインDevOpsMicrosoft 365簡易在庫管理時間外通知ファイルフィルター クエリドキュメント ライブラリfilter querysortソートmultiple item複数項目シェアポイント便利機能カレンダーCalendarTeamsローコード開発非エンジニア体験談勉強内製化
PageTop
ページトップに戻る