- MS365tips
- PowerApps
- PowerAutomate
Power Apps 委任に関する警告への3つの対処法(無視・定期削除・プロパティ書き換え)
「Power Appsの委任問題って何?」
「作成中、委任に関する警告が出てきたけど、どうすれば・・」
「委任問題への対処法が知りたい」
この記事では、
- 委任とは何か
- 委任問題の回避方法
をお伝えします。
委任に関する警告は、無視できるケースもあります。
対処が必要なのかどうか・どう対処すべきかを、ご自身の運用に当てはめて判断することが重要です。
この記事を読めば、対処が必要かどうかの判断方法と、運用に合った対処法がわかります。
ぜひ最後までご覧ください。
—この記事の監修者—
ヒョウノモトハル
- 1979年神奈川県生まれ
- 大学卒業後、モラトリアム期間を経て会社員となる
- 経理・総務・管理といったバックオフィスでの経験を積み、2016年から会社の情報システム部門へ転属
- その後2021年にキャリアの経験を活かし、Microsoft365関連の講座でUdemy講師としてデビュー
- 2023年現在、受講生5万人を抱えるベストセラー講師となる
Contents
委任とは・委任に関する警告とは
まずは、委任について概要をお伝えします。
- 委任とは
- 委任に関する警告とは
委任とは「データベースへの処理のお願い」
委任とは「データベース側に処理をお願いすること」です。
例:SharePointの社員データから「役職」が「主任」のデータだけを表示する
委任する場合:
- SharePointで「役職」が「主任」のデータだけに絞り込み
- Power Appsは、SharePointから渡されたデータを表示するのみ
委任しない場合:
- SharePointから全社員データをPower Appsへ渡す
- 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つです。
- 無視する
- 定期的にデータを削除する
- 委任できる関数のみを使う
それぞれ詳しく解説します。
無視する
委任に関する警告が問題となるのは、データ数が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関数内では変数を利用すると、警告を回避できます。
- 別のタイミング(OnVisible等)で委任できない関数を実行するようにし、結果を変数に代入する
- Filter関数内では変数を利用する
別のタイミングからFilter関数が利用されるまでの間、変数の値は固定となります。
変数に代入するタイミングに注意しましょう。
式の構成を変える
プロパティの式の構成を組み替えるだけで、警告を回避できる可能性もあります。
委任は、データベースソースの列を引数にした関数単位で行われます。
例えば、列を引数にしたFilter関数内でIf関数を行おうとすると、警告が出ます。
反対に、If関数の条件分岐内で、列を引数にしたFilter関数を使用する場合は警告が出ず、委任可能となります。
データソース側のフォーマットを整える
例えば、Filter関数内でフォーマット(日付への変換など)が必要となる場合です。
フォーマットのための関数(textなど)は委任できないため、警告が表示されます。
この場合、データソース側の形式をフォーマット不要な形にすれば、警告を回避できます。
ただし、データソース側のフォーマットを変更すると、更新処理など、他の処理も修正が必要となります。
影響範囲を把握した上で、変更しましょう。
Microsoft365の運用にお困りではありませんか?
株式会社uniteでは、Microsoft365のすべてのアプリを対象に、法人様向けの運用サポートを行っています。
- 社内メール⇒teamsへの円滑な移行と利用率UP施策
- SharePointのドキュメントライブラリを活用したファイル管理
- ExcelやAccessで作成された既存の社内ツールをPowerAppsへリニューアル
- 手作業で行っている業務をPowerAutomateで自動化
等、MS365を利用した業務改善のお手伝いをさせて頂いております。
ご予算、サポート範囲については完全オーダーメードでサポート対応をしておりますので、お気軽にご相談ください。