技術情報ブログ
Power Platform
2022.04.13

【Power Apps】ForAll内でSet/UpdateContextが動かない?Last関数を使った変数更新の実装方法

【Power Apps】ForAll内でSet/UpdateContextが動かない?Last関数を使った変数更新の実装方法

💡 この記事でわかること

Power Apps キャンバスアプリでForAll関数の内部ではSet・UpdateContextが使用できないという制限に直面したとき、Last関数を使った回避策を解説します。コレクション操作で変数に頼らず処理を完結させる実装パターンが身につきます。

  • ForAll関数内でSet/UpdateContextが使えない理由と制限の背景
  • Last関数でコレクションの直前レコードを参照する実装パターン
  • 枝番付与ロジックを例にした具体的なForAll + Last関数の組み合わせコード
この記事を書いた人
小刀稱知哉

小刀稱 知哉ことね ともや

SharePoint Power Platform全般 Copilot Studio 技術アドバイス・教育支援

Power PlatformやSharePointを中心に設計・開発・アドバイス・教育まで幅広く担当しています。内製化をご希望の場合はお気軽にお問い合わせください!

2025 Microsoft MVP(Power Apps・Power Automate)
PL-200 PL-300 PL-400 PL-600 MS-700 AZ-104 AZ-305 SC-200 SC-100

Power AppsのForAll関数とは、コレクションやテーブルの各レコードに対して繰り返し処理を実行する関数です。ただし、ForAll関数の内部ではSet関数やUpdateContext関数による変数の更新が使用できないという制限があります。この記事では、その制限を回避しながら前のレコード情報を参照する方法として、Last関数の活用を解説します。

Power Apps の関数・ロジック実装でお困りの場合は、アーティサンにお気軽にご相談ください。
開発支援から内製化支援まで幅広く対応しています。

X-SP Feature | SharePoint 拡張機能サービス
X-SP Feature | SharePoint 拡張機能サービス
詳しく見る →
X-SP Design | SharePoint デザイン拡張サービス
X-SP Design | SharePoint デザイン拡張サービス
詳しく見る →
SharePoint伴走パートナーサービス
SharePoint伴走パートナーサービス
詳しく見る →
SharePoint 構築支援サービス
SharePoint 構築支援サービス
詳しく見る →
官公庁DX支援サービス
官公庁DX支援サービス
詳しく見る →
内製化支援サービス(Power Apps・Power Automate・Copilot Studio)
内製化支援サービス(Power Apps・Power Automate・Copilot Studio)
詳しく見る →
Power Apps・Power Automate 導入支援サービス
Power Apps・Power Automate 導入支援サービス
詳しく見る →

MSクラウドに関するご相談・お問い合わせはこちら

お問い合わせフォームへ

目次

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

対策:Last 関数を使用する

まとめ

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

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を使いたいと思ったときの対応策について紹介しました。

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

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

 

弊社ではForAll・Last関数をはじめとする Power Apps の開発ノウハウを活かし、貴社のアプリ開発・改善を支援します。

X-SP Feature | SharePoint 拡張機能サービス
X-SP Feature | SharePoint 拡張機能サービス
詳しく見る →
X-SP Design | SharePoint デザイン拡張サービス
X-SP Design | SharePoint デザイン拡張サービス
詳しく見る →
SharePoint伴走パートナーサービス
SharePoint伴走パートナーサービス
詳しく見る →
SharePoint 構築支援サービス
SharePoint 構築支援サービス
詳しく見る →
官公庁DX支援サービス
官公庁DX支援サービス
詳しく見る →
内製化支援サービス(Power Apps・Power Automate・Copilot Studio)
内製化支援サービス(Power Apps・Power Automate・Copilot Studio)
詳しく見る →
Power Apps・Power Automate 導入支援サービス
Power Apps・Power Automate 導入支援サービス
詳しく見る →

MSクラウドに関するご相談・お問い合わせはこちら

お問い合わせフォームへ

 

こちらも合わせて読みたい

Microsoftクラウド関連

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

SharePointのツリービューでフォルダ階層を直感的に表示する方法|X-SP Feature(第6回)

2026.06.24

カスタムスクリプト不要!SharePointでHTMLファイルを表示する方法|X-SP Feature(第5回)

2026.06.17

GA4・Clarity・GTMでSharePointのアクセス解析を行う方法|X-SP Feature(第4回)

2026.06.10

SharePointのアクセスランキングでよく見られるコンテンツを可視化する方法|X-SP Feature(第3回)

2026.06.03

SharePointの未読・既読を一目で管理できるアドオン紹介|X-SP Feature(第2回)

データ構造.Net Core Test ExplorerレスポンシブUpdateContext承認フロー送信元リストLoopショートカットキー時間外非エンジニアDataverseSharePoint Framework転職Slide showMicrosoft365サイトの種類OpenAPI請負契約効率化Power Platform CLI業務キー月額定額PV数 増やす共同所有者1行テキストPVツリービューモデル駆動型アプリSortByColumns関数Dataverse for TeamsDynamics 365ロードマップフォームメールの送信非表示Microsoftshortcut key通知体験談JavaScriptSPFx主キー比較移行要件定義MCPサーバー総合評価型入札資料作成開発手順複合キー委任問題権限トラブル主要な所有者複数行テキストWebパーツファイル管理Power AppsTypeScriptitem関数入門技術form差出人アプリdesignconcat関数ファイル勉強表示サンプルCopilot Studio社内ポータル多言語化サイト構成FAQエージェントデジタルトランスフォーメーション初心者向け拡張機能データ整合性Delegationアクセス権限環境変数選択肢閲覧数可視化x-sp-feature-seriesPower PlatformHTMLGoogle Maps初心者Itエクスポートインスタントクラウドフロー[市民開発者JSON文字制限フィルター クエリ内製化切替samplePowerAppsグループウェアMUI権限設計AIチャットボットプロポーザル方式ハウツービルドデータベース設計サブスクリプション型支援ファイルパスクラシック画面日付Google AnalyticsSharePointEF CoreMarker Clusterer中級者DXインポート自動化したクラウドフロー構築デザインフロー実行ドキュメント ライブラリ市民開発登録者X-SPNFCタグエンゲージメントMultilingualデータ移行実運用官公庁システム画像挿入プロジェクト作成ユニークキーMVP共有設定ソリューションエクスポート整数GA4ExcelマイグレーションRANK()関数キャンバスアプリノウハウカスタマイズ委任自動化したクラウド フロー運用開発環境filter query管理システム列StyleDLPポリシー地方自治体MLJSON書式保守性デジタル化推進複数レコードPCFギャラリー一意制約技術支援情報漏洩対策権限管理データ型Microsoft ClarityPower AutomateFramework CoreDynamics 365 SalesDatePicker情報技術componentVBAフローの種類選択肢列環境sortガバナンス登録日StudioTestCopilot Studiot共有リンクテンプレート化DX推進テーマカラーPDF変換業務システムURLパラメータ技術ブログ 書き方コマンドバーカスタマイズ組織変更X-SP FeatureGTMC#Attribute directivesMicrosoft TranslatorDropdownメッセージIDダイアログエラーインスタント クラウド フロー参照列本番環境ソートerror notification更新者AICanvas自治体DXレポート化サイト複製作り方ダークモード資料自動作成キャンバスアプリ 違いメンテナンスモードエンジニア ブログ メリットSharePoint管理センター注文管理アプリ見逃し防止アクセス解析attributeO/Rマッパーマーカークラスタリングライブラリviewメールコンポーネントエクセルスケジュール済みクラウド フローChatGPTライセンスmultiple itemエラー通知更新日生成系AITest Studio生成AI自治体APIPnP PowerShellページ承認Formulasプロパティフロー設計Power Apps 導入並べ替えブログ 継続 コツDLPサブグリッド未読Google Tag Managervalidationazure sql databasetailwindcssビューfirst()関数dialogerrorレスポンシブ レイアウトOpenAI環境構築手順複数項目削除変更Copilotテスト事例HTTP リクエストカスタムスクリプトドキュメント管理カラーセットテンプレート活用Power Apps 比較ヘッダー非表示技術力向上権限管理ベストプラクティスDataverse テーブル既読タグ埋め込みローコードCase式マルチテナントアクセス制限nestTips復元responsive layoutオープンAIpipelineシェアポイントフォルダ外部DBlicenseテストスタジオ活用ワーケーション業務効率化IT管理カラーユニバーサルデザイン自動化事例モデル駆動型 とはリスト フィルタ文章力 鍛え方野良権限部署全文表示サイトの利用状況AngularHTTP Requestドロップダウンメニューノーコード入れ子新機能restoreデータ行の制限チャットGPTCI/CD便利機能ゴミ箱連携添付ファイルコントロール使い方サイトブランド化名古屋ファイル保存申請システムアプリデザインNode.jsシステム構築便利アウトプット 重要性Teams ファイル共有リレーションシップ閲覧数ヒートマップAccessCSSBreakpointObserver承認動的リスト変数Power BI引き継ぎgalleryパイプラインカレンダー完全削除接続ファイルサイズ基本知識フォントカスタマイズ体験記エンティティワークフロー自動化UI/UXVisual Studio CodeAlternate Key野良アプリ対策IT エンジニア 転職OneDrive1対多アクセスランキングSharePoint アドオンInfoPathxUnitメディアクエリリマインドcollection検索個人列退職ギャラリーDevOpsCalendarモデル駆動型データフローフルリモートワークPowerAutomateブランドセンター感想フォルダ構成設定アクセシビリティPCF代替キーCoEブログ モチベーションつながり参照多対多コンテンツ活用HTMLファイル表示MatTable.Net Core 3.1スマホSetコレクションMicrosoft 365グループユーザー列所有者を変更スクロールMicrosoft 365Teamsセキュリティロールrecycle binアーティサンX-SP Designテーマ作成チームサイトMicrosoft Learn Docsアジャイル開発Wordテンプレート環境構築重複チェック内製化コンサルティングネタ切れ 対策システムカスタマイザーER図強調表示されたコンテンツフォルダツリーAngular MaterialVSCodePCForAll複数の添付ファイルセキュリティグループSharePoint Online異動コンテナ簡易在庫管理ローコード開発ビジネスルールアクセス許可Artisanスライドショーデザイン拡張コミュニケーションサイトカスタムコネクタ準委任契約業務自動化カスタムコンポーネントGUIDITサポートAI ブログ 活用Connection Reference入門編UUドキュメントライブラリ
PageTop
ページトップに戻る