技術情報ブログ
Power Platform
2022.04.13

Power Apps:ForAll 関数で Set や UpdateContext を使いたい時

Power Apps:ForAll 関数で Set や UpdateContext を使いたい時

こんにちは。アーティサン株式会社の小刀稱(ことね)です。

Power Apps でアプリを作成するとき、ForAll 関数の中で、変数を更新したいと思ったことはありませんか?

しかし、ForAll 関数内でSet 関数やUpdateContext 関数を使用することはできません。(2022年3月時点)

本記事では、ForAll関数SetUpdateContextを使いたいと思ったときの対応策について紹介します。
全パターンが今回紹介する方法で対応できるわけではありませんが、1つの案としてご覧ください。

Power Appsを用いてアプリを作成したことのある方に向けた内容となっております。

 

やりたいこと:ForAll 関数内で変数を更新する場面

はじめに、今回やりたいことを説明します。

以下図、左側のコレクション( = colBefore )があったとします。
本コレクションの中に「枝番を追加する」( = colAfter )というのが今回のやりたいことです。

枝番は、以下のロジックで付与します。

  • 1行前の番号 <> 番号 → 枝番 = 1

  • 1行前の番号 = 番号 → 枝番 = 1行前の枝番 + 1

番号が変わった場合は枝番を1に初期化し、番号が同じ場合は枝番を+1しています。

Power Apps-コレクション_枝番の追加
Power Apps-コレクション_枝番の追加

上記を行うためには、ForAll 関数の中で、1行前の番号を取得する必要があると考え、最初は以下のように記載しました。

Set(prevRecord, {番号: 0, 枝番: 0, 名前:""}); // 1行前のレコード
Clear(colAfter);
ForAll(colBefore,
    Collect(colAfter,
        {
            番号: ThisRecord.番号,
            枝番: If(prevRecord.番号 <> ThisRecord.番号, 1, prevRecord.枝番 + 1),
            名前: ThisRecord.名前
        }
    );
    Set(prevRecord, ThisRecord); // 1行前のレコードを更新
)

しかし、以下のエラーが発生してしまいました。

どうやら、ForAll 関数内ではSet 関数が使用できないようです。
(UpdateContext 関数も同様のエラーが発生します。)

Power Apps-ForAll 関数内での変数の更新
Power Apps-ForAll 関数内での変数の更新

 

対策:Last 関数を使用する

上記に対応するためには、Last 関数を用いて実装します。

Last 関数とは、指定したテーブルの最後のレコードを取得する関数です。
詳細は以下URLを参照してください。

Power Apps での First、FirstN、Last、および LastN 関数

以下にLast 関数を用いて修正した内容を記載します。

Clear(colAfter);
ForAll(colBefore,
    Collect(colAfter,
        {
            番号: ThisRecord.番号,
            枝番: If(Last(colAfter).番号 <> ThisRecord.番号, 1, Last(colAfter).枝番 + 1),
            名前: ThisRecord.名前
        }
    )
)

ポイントは、Last(colAfter)の部分です。

ForAll 関数内では、colBeforeのレコード数分、colAfterに1行ずつレコードを追加しています。 よって、ForAll 関数内でLast(colAfter)を指定すると、colAfterに最後に追加したレコード( = colBeforeの1行前のレコード )が取得できるということになります。 イメージを以下図にしました。
Power Apps-ForAll 関数内でのLast 関数を用いる
Power Apps-ForAll 関数内でのLast 関数を用いる

Last 関数を用いることで、無事枝番を付与することができました!

Power Apps-コレクション_枝番の追加完了
Power Apps-コレクション_枝番の追加完了

 

まとめ

本記事では、ForAll関数SetUpdateContextを使いたいと思ったときの対応策について紹介しました。

このような内容は、「知っていれば一瞬」ですが「知らなければ多くの時間が必要」となります。

当社では、今回のような実装のアイデアを多く発信していく予定ですので、是非今後ともご覧ください。
最後まで読んでいただき、ありがとうございました!

 

Power Platform(SharePoint・Power Apps・Power Automate)に関する営業活動や設計、開発などを担当:小刀稱知哉

小刀稱知哉

大分県出身(温泉大好き)、現在は東京都在住

1990年生まれ

30才でメーカーの技術営業からIT業界にジョブチェンジ!!!

趣味は読書

主にMicrosoftのローコード(SharePoint・Power Platform)に関するに関する営業活動や設計、開発などを担当しております!

(最近はCopilot Studioについても勉強中)

持ってる資格はPL-200/PL-300/PL-400/PL-600/MS-700/AZ-104/AZ-305/SC-200/SC-100

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

Power Apps, Power Automate で作る NFC タグを活用したアプリ例

2025.04.16

Power Apps で NFC タグを使ってみる

2025.04.02

Copilot Studioで作成したコパイロットをTeams に追加する方法

2025.03.19

SharePoint リストで主キーを実装し、比較してみた

2025.03.12

SharePointのデザインをもっとおしゃれに!(X-SP Design | SharePoint デザイン拡張サービスのご紹介)(4) サンプルの紹介その2

SharePointEF CoreMarker Clustererキャンバスアプリメールdialogerrorレスポンシブ レイアウトOpenAI環境構築手順複数項目削除変更生成系AIExcelマイグレーションRANK()関数DatePickerfirst()関数Tips復元responsive layoutオープンAIpipelineシェアポイントフォルダ外部DBCopilotPower AutomateFramework CoreDynamics 365 SalesDropdownnest新機能restoreデータ行の制限チャットGPTCI/CD便利機能ゴミ箱連携licenseC#Attribute directivesMicrosoft Translatorview入れ子変数Power BI引き継ぎgalleryパイプラインカレンダー完全削除接続添付ファイルコントロールattributeO/Rマッパーマーカークラスタリングライブラリビュー動的リスト検索個人列退職ギャラリーDevOpsCalendarモデル駆動型データフローファイルサイズvalidationazure sql databasetailwindcssアクセス制限collectionMicrosoft 365グループユーザー列所有者を変更スクロールMicrosoft 365Teamsセキュリティロールrecycle binフルリモートワークローコードCase式マルチテナント承認コレクションセキュリティグループSharePoint Online異動コンテナ簡易在庫管理ローコード開発ビジネスルールごみ箱アーティサンAngularHTTP Requestドロップダウンメニューリマインド複数の添付ファイル送信元リストLoopショートカットキー時間外非エンジニアDataverseアクセス許可ArtisanAccessCSSBreakpointObserverSet承認フローメールの送信非表示Microsoftshortcut key通知体験談JavaScriptSharePoint Framework転職InfoPathxUnitメディアクエリForAllform差出人アプリdesignconcat関数ファイル勉強表示SPFx主キーMatTable.Net Core 3.1スマホUpdateContextエクスポートインスタントクラウドフロー[市民開発者JSON文字制限フィルター クエリ内製化切替サンプルCopilot StudioAngular MaterialVSCodePCロードマップインポート自動化したクラウドフロー構築デザインフロー実行ドキュメント ライブラリ市民開発登録者samplePowerAppsデータ構造.Net Core Test Explorerレスポンシブ技術カスタマイズ委任自動化したクラウド フロー運用開発環境filter query管理システム列X-SPNFCタグモデル駆動型アプリSortByColumns関数Dataverse for Teams入門ItcomponentVBAフローの種類選択肢列環境sortガバナンス登録日StylePowerAutomatePower AppsTypeScriptitem関数初心者情報技術ダイアログエラーインスタント クラウド フロー参照列本番環境ソートerror notification更新者StudioPower PlatformHTMLGoogle Maps中級者メッセージIDコンポーネントエクセルスケジュール済みクラウド フローChatGPTライセンスmultiple itemエラー通知更新日AI
PageTop
ページトップに戻る