複数の値を確認する条件で式を使用する

このチュートリアルでは、式と 条件 を使用し、詳細モード で複数の値を比較する方法を説明します。

クラウド フローを作成するとき、基本モードで 条件 カードを使用し、単一の値を別の値と簡単に比較できます。 ただし、複数の値を比較しなければならない場面もあります。 たとえば、スプレッドシートまたはデータベース テーブルのいくつかの列の値を確認する場合です。

条件では、次の論理式をあらゆる組み合わせで使用できます。

内容
and 2 つの引数を受け取り、両方の値が true の場合は true を返します。
: 両方の引数をブール値にする必要があります。
次の式は、false を返します。
and(greater(1,10),equals(0,0))
or 2 つの引数を受け取り、どちらかの引数が true の場合は true を返します。
: 両方の引数をブール値にする必要があります。
次の式は、true を返します。
or(greater(1,10),equals(0,0))
equals 2 つの値が等しい場合に true を返します。 たとえば、parameter1 が someValue のとき、次の式は true を返します。
equals(parameters('parameter1'), 'someValue')
less 2 つの引数を受け取り、最初の引数が 2 番目の引数よりも小さい場合、true を返します。
: サポートされている型は整数、浮動小数点数、文字列です。
次の式は、true を返します。
less(10,100)
lessOrEquals 2 つの引数を受け取り、最初の引数が 2 番目の引数よりも小さい、または等しい場合は true を返します。
: サポートされている型は整数、浮動小数点数、文字列です。
次の式は、true を返します。
lessOrEquals(10,10)
greater 2 つの引数を受け取り、最初の引数が 2 番目の引数よりも大きい場合は true を返します。
: サポートされている型は整数、浮動小数点数、文字列です。
次の式は、false を返します。
greater(10,10)
greaterOrEquals 2 つの引数を受け取り、最初の引数が 2 番目の引数よりも大きい、または等しい場合は true を返します。
: サポートされている型は整数、浮動小数点数、文字列です。
次の式は、false を返します。
greaterOrEquals(10,100)
empty オブジェクト、配列、文字列が空の場合は true を返します。 次の式は、true を返します。
empty('')
not 逆のブール値を返します。 次の式は、true を返します。
not(contains('200 Success','Fail'))
if 式の結果が true か false の場合、特定の値を返します。 次の式は、「yes」を返します。
if(equals(1, 1), 'yes', 'no')

前提条件

  • Power Automate へのアクセス。
  • テーブルを含むスプレッドシートはこのチュートリアルで後ほど説明します。 Power Automate でアクセスできるように、Dropbox や Microsoft OneDrive などの場所にスプレッドシートを保存してください。
  • Microsoft Office 365 Outlook (Office 365 Outlook を使用するとき、サポートされているあらゆる電子メール サービスをフローで利用できます。)

or 式を使用する

項目の値が valueA または valueB の場合にアクションを行うワークフローがあります。 たとえば、スプレッドシート テーブルのタスクの状態を追跡します。 テーブルに 状態 という名前の列があり、状態 列の指定できる値は次のとおりです。

  • 完了済み
  • ブロック済み
  • 不要
  • 開始前

スプレッドシートは、たとえば、次のようになります。

サンプル スプレッドシート

先のスプレッドシートの場合、Power Automate を利用し、たとえば、状態 列が 完了済み または 不要 に設定されているすべての行を削除します。

フローを作成してみましょう。

空のフローから始める

  1. Power Automate にサインインする。

    サインインする

  2. マイ フロー タブを選択します。

    マイ フローを選択

  3. 一から作成 を選択します。

    一から作成

トリガーをフローに追加する

  1. スケジュール を検索し、スケジュール - 繰り返し トリガーを選択します

    スケジュール トリガー

  2. 1 日に 1 回実行するようにスケジュールを設定します。

    スケジュールの設定

スプレッドシートを選択し、すべての行を取得する

  1. 新しいステップ > アクションの追加 を選択します。

    新しいステップ

  2. を検索し、Excel - 行の取得 を選択します。

    注: 使用しているスプレッドシートに対応する「行の取得」アクションを選択します。 たとえば、Google スプレッドシートを使用している場合、Google スプレッドシート - 行の取得 を選択します。

    行の取得

  3. ファイル名 ボックスのフォルダー アイコンを選択し、参照し、データが含まれるスプレッドシートを検索して選択します。

    スプレッドシートを選択する

  4. テーブル名 の一覧からデータを含むテーブルを選択します。

    テーブルの選択

各行の状態列を確認する

  1. 新しい手順 > その他 > それぞれへの適用の追加 の順に選択します。

    テーブルの選択

  2. トークンを 前の手順から出力を選択 ボックスに追加します。

    テーブルの選択

  3. 条件の追加 > 詳細モードで編集 の順に選択します。

  4. 次の or 式を追加します。 この or 式はテーブル内の各行の値を確認します (式内でアクセスされるとき、行は項目として認識されます)。 状態 列の値が 完了済みまたは不要 の場合、or 式は「true」として評価します。

    or 式は次のように表示されます。

    @or(equals(item()?['status'], 'unnecessary'), equals(item()?['status'], 'completed'))

    条件 カードは次のイメージに似ています。

    or 式のイメージ

一致する行をスプレッドシートから削除する

  1. 条件の IF YES, DO NOTHING 分岐で アクションの追加 を選択します。

  2. 行の削除 を検索し、Excel - 行の削除 を選択します。

    行の削除のイメージ

  3. ファイル名 ボックスで、削除するデータが含まれるスプレッドシート ファイルを検索し、選択します。

  4. テーブル名 一覧で、データを含むテーブルを選択します。

  5. 行 ID トークンを 行 ID ボックスに配置します。

    スプレッドシート ファイル

フローに名前を付け、保存する

  1. フローに名前を付け、フローの作成 ボタンを選択します。

    フローを保存する

or 式を含むフローを実行する

保存後、フローが実行されます。 このチュートリアルの前半で説明したスプレッドシートを作成すると、そのスプレッドシートは実行後、次のようになります。

or 式が完了する

状態列が「完了済み」または「不要」の行からすべてのデータが削除されています。

and 式を使用する

2 つの列を含むスプレッドシート テーブルがあると仮定します。 列の名前は状態と割り当て済みです。 また、状態列の値が「ブロック済み」で、割り当て済み列の値が「John Wonder」の場合、すべての行を削除するとします。 このタスクを実現するには、このチュートリアルの前述のすべての手順に従います。ただし、詳細モードで 条件 カードを編集する場合は、以下の and 式を使用します。

@and(equals(item()?['Status'], 'blocked'), equals(item()?['Assigned'], 'John Wonder'))

条件 カードは次のイメージに似ています。

and 式のイメージ

and 式を含むフローを実行する

ここまで実行していれば、スプレッドシートは次のイメージのようになります。

and 実行前

フローの実行後、スプレッドシートは次のイメージのようになります。

and 実行後

empty 式を使用する

スプレッドシートに空の行があることに注目してください。 空の行を削除するには、empty 式を使用し、割り当て済み列と状態列にテキストが入っていないすべての行を特定します。

このタスクを実行するには、このチュートリアルで前述した and 式を使用する セクションのすべての手順を実行します。ただし、詳細モードで 条件 カードを編集するとき、次の empty 式を使用します。

@and(empty(item()?['Status']), empty(item()?['Assigned']))

条件 カードは次のイメージに似ています。

empty 式のイメージ

フローの実行後、スプレッドシートは次のイメージのようになります。

empty 実行後

余分な行がテーブルから削除されていることにご注意ください。

greater 式を使用する

同僚のために野球のチケットを購入し、スプレッドシートを使用して同僚からの返済を確認するとします。 全額を支払っていない同僚にメールを毎日送信するクラウド フローをすばやく作成できます。

greater 式を使用し、全額を支払っていない従業員を特定します。 全額を支払っていない従業員には催促メールを自動送信できます。

このスプレッドシートは次のようになります。

スプレッドシートのイメージ

greater 式が実装されていますが、これにより支払額が全額に達していないすべての従業員が特定されます。

@greater(item()?['Due'], item()?['Paid'])

less 式を使用する

同僚のために野球のチケットを購入し、スプレッドシートを利用して同僚からの返済を確認するとします。返済は各同僚が同意した日付までとします。 支払期日到達まで 1 日未満になっても全額支払いが完了していない同僚にアラーム メールを送信するクラウド フローを作成できます。

and 式と less 式を併用します。評価する条件が 2 つあるためです。

検証する条件 使用する式
全額が支払われましたか? greater @greater(item()?['Due'], item()?['Paid'])
期日到達まで 1 日未満になっていますか? less @less(item()?['DueDate'], addDays(utcNow(),1))

and 式の中で greater 式と less 式を組み合わせます

greater 式を使用し、全額を支払っていない従業員を特定します。less 式を使用し、期日到達まで 1 日未満になっているか確認します。 次に、メールの送信 アクションを使用し、期日到達まで 1 日未満になっても全額を支払っていない従業員に催促のメールを送信します。

このスプレッドシート テーブルは次のようになります。

スプレッドシートのイメージ

and 式が実装されていますが、それにより期日到達まで 1 日未満になっても全額を支払っていないすべての従業員が特定されます。

@and(greater(item()?['Due'], item()?['Paid']), less(item()?['dueDate'], addDays(utcNow(),1)))

式で関数を使用する

いくつかの式は、クラウド フローの実行が開始するときにまだ存在していない可能性があるランタイム アクションから値を取得します。 式でこれらの値を参照したり使用したりするには、ワークフロー定義言語で提供される関数を使用します。 詳細: Power Automate でのワークフロー定義言語の関数リファレンス