PowerAutomate

【Power Automate入門】トリガーの種類とトリガー条件を解説!不要なフローの実行を減らす方法

ミムチ

むむ…Teamsチャネル投稿時に、同じチャネルに自動投稿するフローを作成したら、無限ループになってしまいましたぞ…!

パワ実

そのようなフローの場合、「トリガー条件」を上手く使うとよいです!

この記事では、Power Automateのトリガーの種類と、トリガー条件の使い方について解説します。

この記事でわかること
  1. Power Automateのトリガーの種類
  2. Webhookトリガーと、ポーリングトリガーの違い
  3. トリガー条件の使い方

例えばTeams投稿のトリガーで、特定の人がメッセージ投稿したときのみをトリガーしたい場合等、トリガー条件を使うと、不要なフローの実行を減らすことができます。

要求数の制限がシビアなフロー等では、特に重要な設定になるので、ぜひご活用ください。

Youtube動画で見たい方は、こちらからどうぞ!

Power Automateのトリガーの種類

Power Automateでフローを開始するためのトリガーの種類は3つあります。

インスタントトリガーは、手動でフローが実行されるもので、スケジュールトリガーは、定期的なスケジュールを設定してフローがじどう実行されるものです。

自動トリガーでは、何かのイベントをきっかけに、自動でフローが実行されます。

パワ実

これらのトリガーの種類について、もう少し具体例をあげて説明します。

インスタント(手動)トリガー

インスタントトリガーは、手動でフローの実行を開始するものです。

フローの一覧画面から、実行ボタンをクリックしてフローを実行したり、Power Appsのボタンクリック時にフローを実行したりできます。

ミムチ

Teamsからアダプティブカード等を使ってフローを実行する場合も、このインスタントクラウドフローになりますな!

スケジュールトリガー

スケジュールトリガーは、設定したスケジュールでフローを自動実行してくれるものです。

例えば、毎日、毎週、毎月等で設定したり、月曜日~金曜日の毎朝9時に実行する等の設定ができます。

定期的なデータのバックアップや、リマインドフロー等によく使われます。

自動トリガー

自動トリガーは、Power Automateのコネクタで選択できるあらゆるイベントが発生したときをトリガーにフローを自動実行できます。

例えば、SharePointリストに新しいデータが登録されたときや、Teamsチャネルに新しいメッセージが投稿されたとき、新しいメールを受信したときなどのトリガーがあります。

さらに、自動トリガーの種類としては、Webhookトリガーとポーリングトリガーの2種類に分けられます。

Webhookトリガーはイベント発生時にサービスから、Power Automateに通知が送られるため、イベント発生後、すぐにフローが実行されます。

例えばTeamsチャットへのメッセージ投稿時は、このWebhookトリガーです。

一方、ポーリングトリガーは、定期的にイベントが発生しているか確認しに行くもので、イベントの発生後、フローが実行されるまでにタイムラグが発生します。

例えば、Teamsチャネルへのメッセージ投稿時は、このポーリングトリガーになります。

トリガーが、Webhookか、ポーリングかを見分けるには、コードビューで、Typeを確認すると分かります。

Typeの最後にWebhookと書いてある場合は、Webhookトリガーで、それ以外はポーリングトリガーです。

また、ポーリングトリガーの場合、定期的にイベントの発生を確認しにいくため、その確認頻度を設定する項目が、パラメーターにあります。

パワ実

フローがすぐに実行される場合と、タイムラグがある場合があるな…と思ったら、ここを確認してみてください。

トリガー条件とは?

トリガー条件とは、「設定」の「トリガー条件」から設定することができ、ここで設定した条件に当てはまる場合のみ、フローを実行することができます。

例えばTeamsチャネルメッセージ投稿時のトリガーで、以下のようにトリガー条件を設定した場合、投稿者(表示名)がパワ実であればフローが実行され、それ以外の投稿者である場合は、フローが実行されません。

フローが実行されない場合、フローの実行履歴にも残りません。

一旦フローを実行して、その後の条件分岐で、条件に当てはまらない場合は終了アクションを使う方法もありますが、トリガー条件を使うと、そもそも不要なフローの実行を減らし、フローの要求数を削減できます。

パワ実

特にアクション数の多いフロー等は、要求数の制限を気にする必要があるため、このトリガー条件を上手く活用するとよいかと思います。

トリガー条件設定の具体例

トリガー条件の具体的な設定方法を実際の画面で見てみましょう!

今回は例として、以下のトリガー条件を設定してみます。

トリガー条件の設定例
  1. Teamsチャネル投稿時のトリガーで、Botによる投稿を対象としたくない
  2. 月曜~金曜の9時~17時の間、30分おきにスケジュール実行したい

①Teamsチャネル投稿時のトリガーで、Botによる投稿は対象にしない

例えば以下のように、Teamsチャネルでユーザーが何等かの投稿をした場合、同じスレッドにBotによるメッセージを返信するフローを作ったとします。

しかしこのままでは、Botによるメッセージ投稿が、またトリガーとなり、無限ループになってしまいます。

条件分岐を使い無限ループを回避することも可能ですが、今回の場合は、トリガー条件を使うのがより良い実装となります。

トリガーの「設定」から、「トリガー条件」の「+追加」をクリックし、以下のような@から始まる条件式を書けばOKです。

@not(equals(triggerOutputs()?['body']?['from']?['application']?['applicationIdentityType'], 'bot'))

この設定では、投稿者のTypeがbotではない場合、という条件を設定しています。

実際にテストをしてみると、最初のユーザーによるチャネルへの投稿時は、フローが実行され、Botから自動でチャネルへの返信がきますが、Botによる投稿はフローがトリガーされません。

パワ実

このような感じで、トリガー条件を使うことができます。

トリガー条件では、フローが実行されたときのトリガーの出力で、データが取得できるもののみ条件を設定できます。

例えば、チャネル投稿時のトリガーでは、投稿者のTypeがBotかどうかが出力で取得できますが、チャット投稿時は情報が取得できないので注意しましょう。

②月曜~金曜の9時~17時の間、30分おきにスケジュール実行する

このトリガーは、スケジュール済みのクラウドフローから作成し、30分おきに実行するように設定します。

まず、9時~17時の間実行する設定をトリガー条件に入れてみましょう。

設定のトリガー条件を追加し、以下のような式を書けばOKです。

@and(greaterOrEquals(int(formatDateTime(convertFromUtc(utcNow(),'Tokyo Standard Time'),'HH')), 9), lessOrEquals(int(formatDateTime(convertFromUtc(utcNow(),'Tokyo Standard Time'),'HH')), 17))

条件として、現在時刻の時間が9時以上、17時未満という設定にしています。

ミムチ

ここまでで、毎日9時~17時に30分おきにフローが実行できる設定となりましたな!

さらにここに、土日を除く月曜日~金曜日の間という条件を加える場合、以下のように式を修正します。

@and(greaterOrEquals(int(formatDateTime(convertFromUtc(utcNow(),'Tokyo Standard Time'),'HH')),9),less(int(formatDateTime(convertFromUtc(utcNow(),'Tokyo Standard Time'),'HH')),17),and(greaterOrEquals(dayOfWeek(convertFromUtc(utcNow(),'Tokyo Standard Time')),1),lessOrEquals(dayOfWeek(convertFromUtc(utcNow(),'Tokyo Standard Time')),5)))

これは、DayOfWeek関数を使い、フローが実行された日が何曜日かを数値で判定しています。

ミムチ

正直設定が複雑で、自分で式を書くのは難しいですな…

パワ実

このような式を設定したい場合、ChatGPT等の生成AIの活用をおすすめします!

生成AIを活用してトリガー条件式を書く

例えば今回の場合、ChatGPTに以下ように質問すると、設定したいトリガー条件の式を作成してくれます。

ChatGPTが回答してくれた式をベースに必要であれば修正を加えてテストしていきます。

トリガー条件の式の設定が適切にできていないとフローが実行されないため、式の中でどこが間違っているのかが分かりづらく、デバッグが難しいことがあります。

そういった場合、一度にすべての条件式を書こうとせず、最初は小さい条件に絞って試し、段々と条件を拡張していくやり方をお勧めします。

例えば今回のように、最初は毎日9時~17時の間で実行する条件式を試し、それが上手くいったら、月曜日~金曜日という条件を追加する感じです。

パワ実

生成AIで作成された式も必ず正しいというわけではないため、少しずつテストしながら、試していくとよいかと思います。

最後に

本日は、Power Automateのトリガーの種類と、トリガー条件の使い方を解説しました。

Power Automateのトリガーには、以下の3つ種類があります。

トリガーの種類
  1. インスタント(手動)トリガー
  2. スケジュールトリガー
  3. 自動トリガー

自動トリガーには、Webhook形式と、ポーリング形式があり、ポーリング形式の場合、イベント発生からフロー実行までにタイムラグがあります。

自動トリガーの種類

Webhook形式

  • イベントが発生したときに、Power Automateに通知が送られる
  • イベントが発生したら、すぐにフローが実行される

ポーリング形式

  • 定期的にイベントの発生を確認しにいく
  • イベントの発生後、フローが実行されるまでにタイムラグがある
パワ実

フローのトリガー条件を設定すると、不要なフローの実行を削減することができるので、ぜひご活用ください!

ABOUT ME
パワ実(Microsoft MVP)
2021年からPower Platform(Power BI、Power Apps、Power Automate)を勉強中。 2023年にIT系・コンサルタントに転職し、仕事でPower Platformを活用したコンサルを行っています。 2025年~Microsoft MVP for Business Applications 受賞 Power Platformを使っていく中で、知りえた情報をブログ、Youtube、Xで発信しています。 Power Platformに関するご相談は以下のページからお願いします! https://www.powerplatformknowledge.com/contact/

Power Platformのご依頼・ご相談について

Power Platformについてのご相談、お仕事のご依頼については、
こちらのお問い合わせページをご確認ください。