Power Automateでフローを作成し、条件分岐で空白値(空文字やNULL)を判定しようとしたときに「権限がありません」や「アクセスが拒否されました」といったエラーが発生することがあります。このエラーは一見すると空白値の扱い方に問題があるように思えますが、実際にはフローの共有範囲やロール設定が原因であるケースが少なくありません。本記事では、空白値の条件判定で権限エラーが発生するメカニズムを解説し、共有範囲とロール設定の見直し手順を具体的に説明します。
【要点】この記事で確認すること
- 最初に見る場所: フローの条件式で使用している関数(empty、null、trimなど)と、そのトリガーやアクションで使用しているコネクタの共有設定です。
- 切り分けの軸: エラーがフロー実行時(ランタイム)か保存時か、自分だけが発生するか他のユーザーも同様かで原因を絞り込みます。
- 注意点: 会社PCでは環境やソリューションの権限設定を管理者に確認せずに変更しないでください。特に共有範囲を広げすぎると情報漏洩のリスクが生じます。
ADVERTISEMENT
目次
権限エラーの発生パターンと影響範囲
空白値の条件判定で権限エラーが発生するパターンは、大きく分けて三つあります。一つ目はフロー所有者以外がフローを実行したときにエラーが出るケースです。二つ目はフロー自体は正常に動作しているが、特定の条件下でエラーが発生するケースです。三つ目はフローを編集・保存しようとしたときにエラーが発生するケースです。これらのパターンでは影響範囲が異なりますので、まずは自分が遭遇したエラーがどのパターンに該当するかを確認してください。
フロー実行時の権限エラー
フローがトリガーされたり、手動で実行されたりするときに権限エラーが発生する場合、トリガーやアクションが使用するコネクタの共有範囲が原因であることが多いです。たとえばSharePointの「アイテムが作成されたとき」トリガーを使っているフローで、条件分岐に空白値の判定がある場合、そのコネクタが自分専用に設定されていると、他のユーザーが実行したときに権限エラーが発生します。
フロー保存時の権限エラー
条件式を編集して保存しようとしたときに権限エラーが発生する場合は、フローが属するソリューションや環境のロール設定が影響している可能性があります。特に「環境管理者」や「ソリューション管理者」以外のロールでは、特定のコネクタ設定の変更が制限されることがあります。この場合、空白値の判定自体は正しくても、保存操作そのものが拒否されています。
空白値の条件判定でエラーが発生するメカニズム
Power Automateの条件式で空白値を判定する際によく使われる関数として、empty、null、equals(空文字列との比較)などがあります。これらの関数自体は誤っていないことが多いのですが、判定対象の値が実際に空白かどうかだけでなく、その値がどのような権限で取得されているかが重要です。たとえば、SharePointリストの列を参照するアクションで、そのリストに対する読み取り権限がない場合、値そのものが取得できずエラーになります。また、空白値の判定結果によって分岐先のアクションでさらに権限が必要な操作を行うと、連鎖的にエラーが発生します。
具体的な例として、以下のような条件式を考えます。
@empty(triggerOutputs()?['body/Field1'])
この式はField1が空かどうかを判定しますが、Field1を参照する権限が不足していると、式の評価自体が失敗し、権限エラーとして扱われます。ただし、Power Automateのエラーメッセージは曖昧な場合が多く、原因が権限なのか値の問題なのか一見して判断できないことがあります。そこで、まずはコネクタの共有範囲とロール設定を切り分ける必要があります。
共有範囲の設定確認と修正手順
コネクタの共有範囲は、フローで使用する各コネクタ(SharePoint、Outlook、Teamsなど)ごとに設定されています。共有範囲が「自分専用」になっていると、他のユーザーがフローを実行したときに権限エラーが発生します。以下の手順で共有範囲を確認・修正します。
- Power Automateのポータル(make.powerautomate.com)にアクセスし、左メニューから「マイフロー」をクリックします。
- 対象のフローを選択し、「編集」をクリックします。
- フローエディターで、権限エラーが発生しているトリガーまたはアクションをクリックします。
- 表示されるコネクタの設定画面で、右上の「…」(その他)メニューを開き、「設定」を選択します。
- 「共有範囲」が「自分専用」になっている場合、それを「このフローの所有者のみ」または「全員」に変更します。ただし、全員にすると他のユーザーもコネクタを使用できるようになるため、セキュリティポリシーを確認してください。
- 変更後、「保存」をクリックし、フローを再度実行してエラーが解消されたか確認します。
注意点として、コネクタの共有範囲は一度変更すると元に戻すのに管理者権限が必要になることがあります。また、共有範囲を変更してもエラーが解消されない場合は、次のロール設定の確認に進みます。
ロール設定の確認と変更方法
Power Automateのロール設定には、環境レベルとソリューションレベルの二種類があります。空白値の条件判定で権限エラーになる場合、特にソリューションのロールが原因となることが多いです。
環境レベルのロール
環境管理者は環境内のすべてのリソースに対してフルアクセスを持ちます。環境メーカーはフローの作成・編集は可能ですが、他のユーザーとの共有や環境設定の変更には制限があります。フローを他のユーザーと共有する場合、環境メーカーのロールでは共有範囲を広げられないことがあります。この場合、環境管理者に連絡してロールを変更してもらう必要があります。
ソリューションレベルのロール
ソリューション内のフローでは、ソリューション管理者やソリューションメーカーなど、より細かいロールが設定されています。空白値の条件判定を行うフローがソリューションに含まれている場合、そのソリューションに対する権限が不足しているとエラーが発生する可能性があります。確認手順は以下の通りです。
- Power Automateポータルで左メニューから「ソリューション」を選択します。
- 対象のソリューションをクリックして開き、右上の「設定」アイコンをクリックします。
- 「セキュリティロール」タブで、自分が割り当てられているロールを確認します。ロールが「基本ユーザー」や「共同作成者」などの場合、管理者に「ソリューション管理者」への昇格を依頼してください。
- また、ソリューションに含まれる各コンポーネント(フロー、コネクタなど)の権限も確認します。特にコネクタ参照の権限が「読み取り」のみになっていないか確認し、必要に応じて「書き込み」権限を追加します。
空白値の正しい条件式の書き方(よくある間違い)
権限エラーとは別に、空白値の条件式自体に誤りがあるケースも困ります。ここでは代表的な間違いと正しい記述方法を紹介します。
| 間違いの例 | 正しい記述 | 説明 |
|---|---|---|
| @empty(‘ ‘) (半角スペース) | @empty(trim(triggerOutputs()?[‘body/Field1’])) | 空白文字スペースはemptyではtrueとみなされません。trimで前後の空白を除去してから判定します。 |
| @null(triggerOutputs()?[‘body/Field1’]) | @equals(triggerOutputs()?[‘body/Field1’], null) | Power Automateではnull関数は存在しません。nullとの比較はequals関数を使います。 |
| 条件式でField1 == ” (空文字) | @equals(triggerOutputs()?[‘body/Field1’], ”) | 直接の比較演算子は使えず、equals関数で比較します。また、空文字とNULLは別物です。 |
これらの間違いが原因でエラーになる場合は権限エラーではなく式エラーとなるため、エラーメッセージをよく確認してください。式エラーの場合、フロー実行履歴に「式の評価に失敗しました」といったメッセージが表示されます。
管理者への報告ポイントと再発防止
権限エラーが共有範囲やロール設定に起因する場合、管理者に以下の情報を伝えるとスムーズに解決できます。
- エラーが発生したフローの名前とURL
- エラーメッセージのスクリーンショット(全文)
- エラーが発生する条件(空白値判定の有無、トリガーの種類など)
- 現在の共有範囲設定とロールのスクリーンショット
- 他のユーザーでも再現するかどうか
再発防止のためには、フロー作成時に最初から共有範囲を適切に設定し、ソリューション利用時はロールを適切に割り当てることが重要です。また、空白値の判定には常にtrimやequals関数を組み合わせて、予期しない空白文字に対応できるようにしておくと、後々のトラブルを減らせます。
よくある質問
Q1. 空白値の条件判定で「アクセスが拒否されました」と出ます。共有範囲は全員に設定しています。なぜですか?
共有範囲が全員でも、コネクタ自体がアクセス先のサービス(例:SharePointサイト)へのアクセス権限を持っていない可能性があります。コネクタの接続先で適切な権限が付与されているか確認してください。また、フロー実行ユーザーのライセンスが不足している場合もあります。
Q2. 条件式で@emptyを使うと常にtrueになります。何が間違っていますか?
@emptyは配列や文字列に対して機能しますが、値がNULLの場合はエラーになります。NULLと空文字は異なるため、まずNULLを判定してからemptyを使うか、@equals(変数, null)で先にNULLチェックを行ってください。
Q3. ソリューション内のフローで権限エラーが発生します。ソリューションの権限を変更してもらえませんか?
ソリューションの権限変更は環境管理者のみ可能です。変更が必要な理由(空白値判定でエラーが出る、共有範囲の変更が必要など)を具体的に伝えた上で依頼してください。なお、権限を緩めすぎるとデータ漏洩リスクが高まるため、最小限の権限で動作するように設計するのが望ましいです。
まとめ
空白値の条件判定で権限エラーが発生した場合、まずはコネクタの共有範囲が適切かどうかを確認しましょう。共有範囲の変更で解決しない場合は、環境やソリューションのロール設定を見直す必要があります。空白値の条件式自体にも誤りがないか、emptyやequals関数の使い方を再確認してください。これらのポイントを押さえておけば、再発を防ぎつつスムーズに問題を解決できるはずです。
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Office・仕事術の人気記事ランキング
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【Excel】文字が入っているセルの「個数」を数える!COUNTA関数の簡単な使い方
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Outlook】予定表の「祝日」が表示されない!最新カレンダーの追加と二重表示の修正手順
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
