Azure Logic Appsで値を保存・渡す変数を作成してください

適用対象: Azure Logic Apps (従量課金 + Standard)

ワークフローで値を保存・渡すには、変数を作成します。 変数は整数、float、ブール、文字列、配列、オブジェクトの値をサポートしています。

たとえば、変数を使用してループの実行回数を追跡することができます。 配列を反復したり特定の項目をチェックしたりするには、各配列項目のインデックス番号を参照する変数を使用します。

変数を作成した後、次のタスクを選択してください:

前提条件

  • Azure アカウントとサブスクリプション。 無料の Azure アカウントを取得します。

  • 変数を作成する対象のロジック アプリ ワークフロー(ワークフローを開始するトリガーを含む)

    変数の作成や操作のためのアクションを追加する前に、ワークフローの最初のステップとしてトリガーを導入 し なければなりません。

    このガイドはAzureポータルを使用しますが、Visual Studio Codeと対応するAzure Logic Apps拡張機能を使ってロジックアプリのワークフローを構築することもできます。

変数を扱う際の考慮事項

  • デフォルトでは、 各ループごとに 反復が並列で実行されます。 ループ内の変数が予測可能な結果を出すようにするために、 ループを順番に実行してください。

  • 変数は存在し、それを作成するワークフロー内でのみグローバルです。

  • 変数はループの反復間でのみそのワークフロー内で永続します。

  • 変数は、その名前で参照してください。アクションの出力を参照する際に通常使用する、変数を作成したアクションの名前ではなく、変数名を使用します。

変数を初期化する

変数を作成するには、 Initialize variable アクションをワークフローに追加してください。 変数はワークフローのグローバルレベルでのみ宣言でき、スコープ、条件、ループではできません。

  1. Azure portal で、デザイナーでロジック アプリ ワークフローを開きます。

  2. デザイナーで、ワークフロータイプに基づく一般的な手順に従って「 Initialize variable 」というアクションを追加します。

  3. 変数に関する次の情報を指定します。

    プロパティ 必須 値 説明
    名前 はい < 変数名> 変数の名前。
    Type はい < 変数型> 変数のデータ型。
    Value いいえ < スタート値> 変数の初期値です。

    ヒント: 省略することもできますが、変数の開始値を常に把握するため、この値を設定することをお勧めします。

    一度に複数の変数を作成するには、[ 変数の追加] を選択します。

    例えば、この Initialize変数 アクションには、変数の名前、データ型、初期値が含まれます:

    AzureポータルとInitialize変数というアクションを持つロジックアプリのワークフローを示すスクリーンショットです。

  4. 引き続き、シナリオに必要なアクションを追加します。 操作が完了したら、デザイナーのツールバーで、[保存] を選択します。

デザイナービューからコードビューに切り替えると、以下の例で Initialize変数 アクションがワークフロー定義(JavaScriptオブジェクト表記(JSON)形式でどのように表示されるかを示しています:

"actions": {
   "Initialize_variable": {
      "type": "InitializeVariable",
      "inputs": {
         "variables": [ 
            {
               "name": "Count",
               "type": "Integer",
               "value": 0
            }
         ]
      },
      "runAfter": {}
   }
}

次の例は、他の変数型を示しています。

ブール型変数

"actions": {
   "Initialize_variable": {
      "type": "InitializeVariable",
      "inputs": {
         "variables": [
            {
               "name": "myBooleanVariable",
               "type": "boolean",
               "value": false
            }
         ]
      },
      "runAfter": {}
   }
},

Float 変数

"actions": {
   "Initialize_variable": {
      "type": "InitializeVariable",
      "inputs": {
         "variables": [
            {
               "name": "myFloatVariable",
               "type": "float",
               "value": 1.99999
            }
         ]
      },
      "runAfter": {}
   }
},

文字列変数

"actions": {
   "Initialize_variable": {
      "type": "InitializeVariable",
      "inputs": {
         "variables": [
            {
               "name": "myStringVariable",
               "type": "string",
               "value": "lorem ipsum"
            }
         ]
      },
      "runAfter": {}
   }
},

オブジェクト変数

"actions": {
   "Initialize_variable": {
      "type": "InitializeVariable",
      "inputs": {
         "variables": [
            {
               "name": "MyObjectVariable",
               "type": "object",
               "value": {
                  "ProductItem": {
                     "Name": "myProductName",
                     "ProductID": "000000"
                  }
               }
            }
         ]
      },
      "runAfter": {}
   }
},

整数の配列

"actions": {
   "Initialize_variable": {
      "type": "InitializeVariable",
      "inputs": {
         "variables": [
            {
               "name": "myArrayVariable",
               "type": "array",
               "value": [1, 2, 3]
            }
         ]
      },
      "runAfter": {}
   }
},

文字列の配列

"actions": {
   "Initialize_variable": {
      "type": "InitializeVariable",
      "inputs": {
         "variables": [
            {
               "name": "myArrayVariable",
               "type": "array",
               "value": ["red", "orange", "yellow"]
            }
         ]
      },
      "runAfter": {}
   }
},

変数の値を取得する

変数の内容を取得または参照するには、ワークフローデザイナーおよびコードビューエディタの variables() 関数 を使用します。 アクションの出力を参照するときはアクションの名前を使用するのが普通ですが、変数を参照するときは、変数の名前をトークンとして使用します。

たとえば、次の式は、variables()関数を使用して、このガイドで作成する配列変数から項目を取得します。 string()関数は、変数の内容を文字列形式で返します:"1, 2, 3, red"。

@{string(variables('myArrayVariable'))}

変数の値を増やす

変数を特定の定数値で増やす ("増分する") には、変数の値を増やすアクションをワークフローに追加します。 このアクションが正しく機能するのは、整数型と浮動小数点型の変数だけです。

  1. デザイナーで、ワークフロータイプに基づく一般的な手順に従って「 Increment変数 」と名付けられたアクションを追加します。

  2. このアクションについて、次の情報を提供します。

    プロパティ 必須 値 説明
    名前 はい < 変数名> 増分する変数の名前。
    Value いいえ < 増分値> 変数を増分するために使う値を。 既定値は 1 です。

    ヒント: 省略することもできますが、変数の値を増やす場合の具体的な値を常に把握するため、この値を設定することをお勧めします。

    次の例は、このアクションのサンプル値を示しています。

    AzureポータルとLogicアプリのワークフロー、そしてIncrement変数というアクションが示されたスクリーンショットです。

  3. 完了したら、ワークフローを保存します。 デザイナーのツール バーで、[保存] を選択します。

デザイナーからコード ビューに切り替えると、次の例のように、変数の値を増やすアクションが JSON 形式のワークフローの定義内でどのように表示されるかを確認できます。

"actions": {
   "Increment_variable": {
      "type": "IncrementVariable",
      "inputs": {
         "name": "Count",
         "value": 1
      },
      "runAfter": {}
   }
},

例:ループでメール添付ファイルを数える

この例では、カウンターをゼロで初期化し、各メール添付ファイルごとにカウンターを1回ずつ増やし、添付ファイル総数を返します。

  1. Azure portal で、空のワークフローを使用してロジック アプリ リソースを作成します。 新しいメールと添付ファイルをチェックするトリガーを追加します。

    この例では、新しいメールが届いたとき という名前の Office 365 Outlook トリガーを使用しています。 このトリガーはメールに添付ファイルがある場合にのみ発動するように設定してください。 ただし、添付ファイルを含んだ新しいメールをチェックするものであれば、どのコネクタを使用してもかまいません (Outlook.com コネクタなど)。

  2. トリガーで「 はい 」を選択して、以下のプロパティをアタッチメントチェックし、それらをワークフローに渡してください:

    • 添付ファイルのみ
    • 添付ファイルを含める

    Azure ポータルとロジック アプリのワークフローを示した、添付ファイルを確認して含めるために Office 365 Outlook のトリガー プロパティが選択されたスクリーンショット。

  3. Initialize変数アクションを追加して、0から始まるCountという整数変数を作成します。

  4. デザイナーで、ワークフロータイプに基づく一般的な手順に従って「 For each 」というアクションを追加してください。

  5. ループ内で、以下の手順に従ってください:

    1. 「 前のステップから出力を選択する 」というボックス内で入力オプションを選択してください。
    2. 稲妻アイコンを選択して、動的コンテンツリストを表示します。
    3. 一覧の [ 新しいメールが届いたとき] で、[ 添付ファイル] を選択します。

    AzureポータルとLogicアプリのワークフローを示したスクリーンショットで、「For each loop」、動的コンテンツリストを開き、「添付ファイル出力」を選択しています。

    Attachments プロパティは、トリガーの出力から電子メールの添付ファイルを含む配列をループに渡し、ワークフローが反復処理できるようにします。

  6. For each ループで、[アクションの追加] を選択します。

  7. デザイナーで、ワークフロータイプに基づく一般的な手順に従って「 Increment変数 」と名付けられたアクションを追加します。

    Note

    [変数の値を増やす] アクションがループ内に表示されることを確認します。 ループの外側に表示されている場合は、このアクションをループの内側にドラッグします。

  8. [変数の値を増やす] アクションの [名前] ボックスの一覧から Count 変数を選択します。 Value プロパティを 1 に設定します。

    Count という名前の変数が選択されている Azure portal とロジック アプリのワークフローのスクリーンショット。

  9. ループの下に、添付ファイルの数を送信するアクションを追加します。 たとえば、そのアクション内で、Count 変数の値を挿入します。

    AzureポータルとLogicアプリのワークフローと、結果を送信するアクションを示すスクリーンショットです。

  10. 完了したら、ワークフローを保存します。 デザイナーのツール バーで、[保存] を選択します。

ワークフローをテストする

  1. ワークフローを手動でトリガーするには、デザイナーのツール バーで [実行] >[実行] を選択してワークフローを手動で実行します。

  2. この例で使用した電子メール アカウントに、添付ファイルを少なくとも 1 つ含んだメールを送信します。

    この手順で、ワークフロー インスタンスを作成して実行するワークフロー トリガーを起動します。 この結果、送信したメールに含まれる添付ファイルの数を示した自分宛てのメッセージまたはメールがワークフローから届きます。

デザイナーからコード ビューに切り替えると、次の例のように、JSON 形式のワークフロー定義内で For each ループと変数の値を増やすアクションがどのように表示されるかを確認できます。

"actions": {
   "For_each": {
      "type": "Foreach",
      "actions": {
         "Increment_variable": {
           "type": "IncrementVariable",
            "inputs": {
               "name": "Count",
               "value": 1
            },
            "runAfter": {}
         }
      },
      "foreach": "@triggerBody()?['Attachments']",
      "runAfter": {
         "Initialize_variable": [ "Succeeded" ]
      }
   }
},

変数の値を減らす

変数を特定の定数値で減らす ("減分する") 手順は、変数の値を増やす場合と変わりません。ただし、そのときにワークフローに追加するアクションは、変数の値を減らすになります。 このアクションが正しく機能するのは、整数型と浮動小数点型の変数だけです。

次の表では、変数の値を減らすアクションの情報について説明します。

プロパティ 必須 値 説明
名前 はい < 変数名> 値を減らす変数の名前
Value いいえ < 減少値> 変数の値を減らすのに使用する値。 既定値は 1 です。

ヒント: 省略することもできますが、変数の具体的な減分値を常に把握するため、この値を設定することをお勧めします。

デザイナーからコード ビューに切り替えると、次の例のように、JSON 形式のワークフロー定義内で変数の値を減らすアクションがどのように表示されるかを確認できます。

"actions": {
   "Decrement_variable": {
      "type": "DecrementVariable",
      "inputs": {
         "name": "Count",
         "value": 1
      },
      "runAfter": {}
   }
},

変数を設定する

既存の変数に異なる値を割り当てる手順は、次の点を除いて、変数の値を増やす場合と同じです。

  1. 検索して選択するアクションは [変数の設定] になります。

  2. このアクションについて、次の情報を提供します。

    プロパティ 必須 値 説明
    名前 はい < 変数名> 変数の名前が変わる。
    Value はい < 新しい値> 変数に代入する値。 変数と新しい値の両方が同じデータ型であることを確認してください。 このアクションには既定値がないため、値は必須です。

    Note

    変数の値を増やすまたは値を減らす場合を除き、ループ内で変数に変更を加えると、予期しない結果を招く "可能性" があります。既定では、ループがパラレル (またはコンカレント) に実行されるためです。 このような場合は、ループを逐次的に実行するように設定してみてください。 たとえば、ループ内で変数の値を参照するとき、ループ インスタンスの最初と最後で値が一致していなければならない場合は、次の手順に従ってループの動作を変更してください。

    1. ループを選択して情報ウィンドウを表示し、[ 設定] を選択します。

    2. [ 全般 ] セクションの [ コンカレンシー制御] で、設定を [オフ] から [オン] に変更します。

    3. 並列処理 の次数 スライダーを 1 にドラッグします。

デザイナービューからコードビューに切り替えると、以下の例は Set変数 アクションがワークフロー定義(JSON形式)にどのように現れ、 Count 変数の現在の値を別の値に変更するかを示しています。

"actions": {
   "Initialize_variable": {
      "type": "InitializeVariable",
      "inputs": {
         "variables": [ {
               "name": "Count",
               "type": "Integer",
               "value": 0
          } ]
      },
      "runAfter": {}
   },
   "Set_variable": {
      "type": "SetVariable",
      "inputs": {
         "name": "Count",
         "value": 100
      },
      "runAfter": {
         "Initialize_variable": [ "Succeeded" ]
      }
   }
},

変数に追加する

文字列を格納する変数または配列を格納する変数では、その文字列または配列の最後の要素として変数の値を挿入 ("追加") することができます。 変数のインクリメント手順に従い、以下の例外があります。

  1. 対象の変数が文字列か配列かによって、次のいずれかのアクションを検索して選択します。

    • 文字列変数に追加
    • 配列変数に追加
  2. 文字列または配列の最後の要素として追加する値を指定します。

    プロパティ 必須 値 説明
    名前 はい < 変数名> 変数の名前が変わる。
    Value はい < 値を追加> 付けたい値は、どんな型でも構いません。

デザイナーからコード ビューに切り替えると、次の例のように、JSON 形式のワークフロー定義内で配列変数に追加するアクションがどのように表示されるかを確認できます。

次の例では、配列の変数を作成し、配列の最後の項目として別の値を追加します。 結果は、この配列を含む更新された変数です: [1,2,3,"red"]。

"actions": {
   "Initialize_variable": {
      "type": "InitializeVariable",
      "inputs": {
         "variables": [ {
            "name": "myArrayVariable",
            "type": "Array",
            "value": [1, 2, 3]
         } ]
      },
      "runAfter": {}
   },
   "Append_to_array_variable": {
      "type": "AppendToArrayVariable",
      "inputs": {
         "name": "myArrayVariable",
         "value": "red"
      },
      "runAfter": {
        "Initialize_variable": [ "Succeeded" ]
      }
   }
},