• MS365tips
  • PowerApps
  • PowerAutomate

Power Apps 委任に関する警告への3つの対処法(無視・定期削除・プロパティ書き換え)

「Power Appsの委任問題って何?」
「作成中、委任に関する警告が出てきたけど、どうすれば・・」
「委任問題への対処法が知りたい」

この記事では、

  • 委任とは何か
  • 委任問題の回避方法

をお伝えします。
委任に関する警告は、無視できるケースもあります。
対処が必要なのかどうか・どう対処すべきかを、ご自身の運用に当てはめて判断することが重要です。

この記事を読めば、対処が必要かどうかの判断方法と、運用に合った対処法がわかります。
ぜひ最後までご覧ください。

—この記事の監修者—

ヒョウノモトハル

  • 1979年神奈川県生まれ
  • 大学卒業後、モラトリアム期間を経て会社員となる
  • 経理・総務・管理といったバックオフィスでの経験を積み、2016年から会社の情報システム部門へ転属
  • その後2021年にキャリアの経験を活かし、Microsoft365関連の講座でUdemy講師としてデビュー
  • 2023年現在、受講生5万人を抱えるベストセラー講師となる

委任とは・委任に関する警告とは

まずは、委任について概要をお伝えします。

  • 委任とは
  • 委任に関する警告とは

委任とは「データベースへの処理のお願い」

委任とは「データベース側に処理をお願いすること」です。

例:SharePointの社員データから「役職」が「主任」のデータだけを表示する

委任する場合:

  1. SharePointで「役職」が「主任」のデータだけに絞り込み
  2. Power Appsは、SharePointから渡されたデータを表示するのみ

委任しない場合:

  1. SharePointから全社員データをPower Appsへ渡す
  2. Power Apps側で絞り込みを行い、表示する

Power Appsから見れば、委任した方が、処理は楽になります。

委任に関する警告は「委任できない状態」

委任に関する警告とは、「データベース側に処理をお願いできない」場合に表示される警告です。
厳密には「データベース側でサポートしていない関数を使用している」場合、委任ができず、警告が表示されます。
委任に関する警告が表示されている場合、その処理は委任できず、Power Apps側で行われることになります。

委任できない場合500件を超えたデータが無視される

委任に関する警告が出ている処理、つまりPower Apps側でしか行えない処理は、Power Appsに負荷がかかるため、大量のデータを処理できません。

具体的には、データソースから先頭500件を超えたデータが無視されます。
500件の上限は、絞り込み後ではなく、絞り込み前のデータ全体が対象です。

例1:SharePointの社員データから「役職」が「主任」のデータだけを表示する

○社員データが800件ある場合、先頭の500件に存在する「主任」だけが表示される
×絞り込み後、主任が500件以内なら全件表示される

例2:SharePointの申請データから「状態」が「承認待ち」のデータだけを表示する

○申請データが500件を超えた場合、501件目以降の「承認待ち」の申請データは一覧に表示されない
×「承認待ち」のデータが500件を超えた場合、501件目以降は一覧に表示されない

(Power Appsで処理する件数の変更方法)

デフォルトだとPower Appsで処理できるのは500件ですが、設定により2000件まで増やすことができます。
設定箇所は、アプリを開いた後の「設定」→「全般」→「データ行の制限」です。



ただ、500件がデフォルトなのは、Power Appsの処理が重くなりすぎるのを防ぐためです。
動作遅延が発生しないか等のバランスを見て、設定しましょう。

委任に関する警告への3つの対処方法

委任に関する警告が表示された場合の、対処方法をお伝えします。
対処法は、大きく3つです。

  1. 無視する
  2. 定期的にデータを削除する
  3. 委任できる関数のみを使う

それぞれ詳しく解説します。

無視する

委任に関する警告が問題となるのは、データ数が500件(設定変更した場合は2000件)を超えた場合のみです。

  • 現状の件数が上限数よりも少なく、余裕がある
  • 急激に増えることはない

場合は、委任に関する警告を放置しても問題ないでしょう。

例えば、社員データから「役職」が「主任」のデータだけを表示する際に、委任に関する警告が出ている場合。
現状の社員数が100人前後で、今後数十年に渡り大幅な増員が予定されていないのであれば、放置しても問題となることはないでしょう。

ただし、放置しても良いと判断するのは以下いずれかの場合のみです。

  • 「そのPower Appsのアプリを利用している間は、上限を超えない」ことが確かである
  • 上限を超えたとしても、致命的な問題にはならない(「動作がおかしい」等の報告を受けてから対処すれば問題ない)

上限を超える可能性があり、問題が起きると業務が止まってしまうようなアプリの場合は、何かしらの対策を行うことをオススメします。

定期的にデータを削除する

以下の場合は、定期的にデータを削除することで、対処可能です。

  • 扱うデータ量が少なく、ピーク時でも上限を超えない
  • 消しても良いデータの判別が明確(「承認済み」「対応済み」など)
  • データをソース元に保管して置く必要がない

注意点として、データ量は、平均ではなくピーク時で判断しましょう。
平均が上限以下であっても、ピーク時に超える場合、問題が起こることになります。

また、消すデータの条件は、慎重に決めましょう。
時間のみでなく、データの状態(ステータス)も含めると安心です。
時間のみだと、処理に時間がかかっているだけで、まだ残しておくべきデータも削除されてしまう可能性があります。
NG例:
データが作成されてから10日以上経ったデータ
OK例:
ステータスが「承認済み」かつ、データが最後に更新されてから10日以上経ったデータ

削除は、できれば自動化しましょう。実行し忘れを防ぐためです。
Power Automateを使えば、削除を実行するフローを定期実行することも可能です。

以下の事例では、定期的にデータを削除することで委任の警告に対応しました。

委任できるようにプロパティを書き換える

委任に関する警告が出ているプロパティを、委任できる形に書き換えることで、根本的な解決ができます。
プログラミング的な専門知識が必要となり、どう書き換えても対応できないケースもあります。
専門知識がない場合、まずは放置・定期的な削除を検討すると良いでしょう。

Power Appsでは、委任できる関数が決まっています。

頻繁に変わっている(関数が増えている)ため、詳細は以下の公式サイトをご確認ください。
https://learn.microsoft.com/ja-jp/power-apps/maker/canvas-apps/delegation-overview#delegable-functions

*実際に委任できるかどうかは、ソースとなるデータベースとの組み合わせで決まります。
公式サイトに書かれている関数であれば、必ず委任ができる訳ではありませんので、ご注意ください。

定期削除するフローの詳細

Power Automateで定期的にデータを削除する場合のフローについて、大まかな流れをお伝えします。
今回、データソースにはShare Pointを使っています。

トリガーにRecurrenceを指定して定期実行

トリガーには「Recurrence」を使用します。

詳細オプションにて、「何曜日の何時から」など、より細かい設定ができます。
画面では、毎週月曜日に実行するよう設定しています。

過去の時間の取得・タイムゾーンの変換

「過去の時間の取得」アクションで、削除するデータの条件となる日時を取得します。
例えば1週間以上前のデータを削除する場合、取得するのは1週間前の日時です。

「過去の時間の取得」で取得できるのはUTC(協定世界時)です。
「タイムゾーンの変換」アクションで、日本時間に変換します。

※このタイムゾーンの変換は、行わなくても結果は一緒です。テスト時にわかりやすいため、日本時間に変換しています。

「複数の項目の取得」アクションで削除データを絞り込み

日本時間に変換した日時を使って、SharePointのリストから、削除対象データを絞り込みます。
絞り込みにはフィルタークエリを使用します。

例えば、
【列「approvalstate」が「承認済み」 かつ、
「Modified」(データ更新日時)が取得した日時(今回だと1週間前)よりも小さい】
データを取得したい場合、フィルタークエリの設定は以下です。

approvalstate eq '承認済み' and Modified le '@{body('タイム_ゾーンの変換')}'

フィルタークエリに関する詳細は、以下の記事を参考ください。

データの数だけ「項目の削除」を繰り返す

「項目の削除」にて、「複数の項目の取得」アクションで絞り込んだデータを削除します。
IDには「複数の項目の取得」アクションのIDを指定します。

委任に関する警告を解除するためのプロパティの書き換え方法

最後に、対処法の1つである「委任できるようにプロパティを書き換える」について、具体的なやり方を解説します。
データソースはShare Pointで「Filter関数内で委任に関する警告が出た場合」を例に、代表的な書き換え方を紹介します。

別のタイミングで変数に代入しておく

Filter関数内で、委任できない関数(LookUp等)を使用していると、その部分に波線が引かれます。
以下のように、別にタイミングで変数に代入し、Filter関数内では変数を利用すると、警告を回避できます。

  1. 別のタイミング(OnVisible等)で委任できない関数を実行するようにし、結果を変数に代入する
  2. Filter関数内では変数を利用する

別のタイミングからFilter関数が利用されるまでの間、変数の値は固定となります。
変数に代入するタイミングに注意しましょう。

式の構成を変える

プロパティの式の構成を組み替えるだけで、警告を回避できる可能性もあります。
委任は、データベースソースの列を引数にした関数単位で行われます。
例えば、列を引数にしたFilter関数内でIf関数を行おうとすると、警告が出ます。
反対に、If関数の条件分岐内で、列を引数にしたFilter関数を使用する場合は警告が出ず、委任可能となります。

データソース側のフォーマットを整える

例えば、Filter関数内でフォーマット(日付への変換など)が必要となる場合です。
フォーマットのための関数(textなど)は委任できないため、警告が表示されます。
この場合、データソース側の形式をフォーマット不要な形にすれば、警告を回避できます。
ただし、データソース側のフォーマットを変更すると、更新処理など、他の処理も修正が必要となります。
影響範囲を把握した上で、変更しましょう。

Microsoft365の運用にお困りではありませんか?

株式会社uniteでは、Microsoft365のすべてのアプリを対象に、法人様向けの運用サポートを行っています。

  • 社内メール⇒teamsへの円滑な移行と利用率UP施策
  • SharePointのドキュメントライブラリを活用したファイル管理
  • ExcelやAccessで作成された既存の社内ツールをPowerAppsへリニューアル
  • 手作業で行っている業務をPowerAutomateで自動化

等、MS365を利用した業務改善のお手伝いをさせて頂いております。
ご予算、サポート範囲については完全オーダーメードでサポート対応をしておりますので、お気軽にご相談ください。