Set variableノードを使用して、フロー内で再利用できるマッピングを作成する
定義されたマッピングを持つ独自のデータ・プロパティを作成し、フローの変数として使用することができます。 App Connect フローの変数として使うことができます。 これにより、カスタムマッピングをフロー内の一箇所に作成・保存し、同じフロー内の他の場所で繰り返し参照することができる。
Set variable ノードを使用して、再利用可能なカスタムマッピングを作成できます。 このノードには、特定の JSON データ型(文字列、オブジェクト、配列など)の単純または複雑な変数を定義するために使用できるプロパティ・エディタが含まれています。 エディターを使って、まず名前、データ型、構造体(データ型がオブジェクトまたはオブジェクトの配列の場合)を割り当てたプロパティを(変数として)作成します。 次に、フロー内の以前のノードの値を使用して、これらのプロパティにマッピングを割り当てます。 一度定義すると、これらのプロパティまたは変数を、フロー内の後続ノードで入力として複数回使用できます。
Set variableノードは Toolbox タブから利用できる。 このノードは、フロー内で、マッピングを変数として参照するノードの前に配置する必要があります。

再利用可能なマッピングの定義と使用
再利用可能なマッピングは、Set変数ノードで以下のように定義できます:
- プロパティを定義するには、 Add propertyを使用して、各プロパティの名前とデータ型を追加します。
図2: フローに挿入された Set variable ノードに、Add property と Edit mappings のボタンが表示される 
データ型がオブジェクトまたはオブジェクトの配列であるプロパティについては、階層的な親子関係を識別する構造も定義する必要があります。 プ ロパテ ィ の追加について詳 し く は、 例 1 を参照。 Using property editor and 例 2. プロパティエディタを使って「ソース」配列を「ターゲット」配列にマップする 「 独自のデータ・プロパティを定義する 」トピックで説明します。 このノードから複数のプロパティセットを定義できる。
次の例は、誰かが会社のイベントに参加するためにサインアップしたときにトリガーされるフローで使用されるように定義された、
Attendeeプロパティのセットを示しています。図3: Set 変数ノードのプロパティ定義 
- プロパティをフィールドとして公開し、フロー内の以前のノードのフィールドにマッピングして値を指定できるようにします。 Edit mappings」 をク リ ッ ク し てプ ロ パテ ィ ・ フ ィ ール ド を表示 し、 「例 1」 で説明 し た よ う にそのマ ッ ピ ン グ を定義 し ます。 プロパティエディタを使用する 「 独自のデータ・プロパティを定義する 」トピックで説明します。注: マッピングにJSONata式を適用することもできる。 以下の例は、 先頭画像の
Attendeeプロパテ ィ の完成 し た マ ッ ピ ン グ を示 し てい ます。図4: Set 変数ノードのプロパティのマッピング 
これで、定義したマッピングをフロー内の後続ノードで再利用できる。 イベントに関する確認メール( Gmail / メッセージ作成アクションとして実装)に、新規参加者のフルネームを記載したいとします。 また、新しい出席者の詳細(フルネームを含む)を、管理しているスプレッドシートに追加したいとします( Google Sheets / Create row アクションとして実装)。 出席者のタイトル、名、姓の組み合わせである [FullName] マッピング(例: Ms Jane DOE )は、これらの両方のノードで再利用できます。 再利用を説明する以下の例では、再利用可能なマッピングは、Available inputsリストの Set variable セクションの下に表示されていることに注目してください。


例
私はEventbriteのアカウントを持っていて、 MattClarkeEventsInc という会社のイベントを管理しています。
このようなイベントに新しい参加者を迎えるたびに、私は次のように対応できるようにしたい:
- 新規参加者にEメールで返信し、自社の他の参加者の情報を提供する。
- 発見された既存の出席者それぞれに、自社からの新しい出席者を知らせるメールを送る。
- 新しい出席者に関する情報をスプレッドシートに追加し、その出席者が私の会社の従業員であるかどうかを示す。
Eメールを送信し、スプレッドシートを更新するために、以下の情報が必要です:
- 出席者氏名
- 参加者のEメール
- イベント名
- 私の会社の従業員である場合
- 関連する出席者情報リスト - 各同僚の名前とEメール
私のイベント管理フロー
新しい参加者を受け取ると、既存の Eventbriteの取得アクションを使用して以下の情報を収集します:
- イベントそのもの(新規参加者のイベントIDを使用)
- イベント参加者全員(新規参加者と同じイベントIDを使用)
Set変数ノードを使えば、必要な情報をすべて読みやすいデータ構造にまとめることができる。 私は変数の構造をこう定義している:

そして、 Edit mappingsを使って、各プロパティのマッピングを定義し、必要に応じてJSONata式を使用します:

出席者とイベントの情報はかなり些細なマッピングで、最も複雑なのは、出席者が私の従業員かどうかを導き出すことだ。
マッピングは FellowAttendees マッピングは Array of objects 型で、出席者オブジェクトのリストとなるようにします。 このマッピングは、反復処理され、子プロパティにマッピングが適用される配列を出力する必要がある。

配列の中身は FellowAttendees 配列の内容には、新しい参加者と同じ会社の現在の参加者をすべて含める必要があります。 そのリストを作成するために、次のJSONata式を使った:
$EventbriteRetrieveattendees[profile.company=$Trigger.profile.company][profile.email != $Trigger.profile.email]
マッピングの述語( [ ] に含まれるルール)は、出席者のリストを評価する:
- 新規参加者の会社と同じ会社の人
- しかし、その出席者のEメールではない
フローで実行したいアクションに、これらのマッピングを使うことができるようになった。

出席者のリストを配列構造として持っているので、その情報を電子メールで送信する際に読みやすい形式に抽出できるようなロジックを適用する必要があります。 JSONataには、配列構造を扱う際に使用できる一連の関数があります。 今回は、 $map 関数を使って、配列の各エントリーを出席者の名前とEメールという読みやすい文字列に変換している。
評価されたサンプルデータを見ると、 Body フィールドに対する私のマッピングの推奨出力は、メールの受信者が読めるものであることがわかります。

仲間の出席者に電子メールを送るという一括タスクを実行するために、Set Variableノードのマッピングに設定されているのと同じ配列構造を繰り返し処理するFor eachノードを使用しました。

これにより、Set Variableノードのマッピングを使用して、そのリストのすべての出席者に送信する標準的な電子メールテンプレートを作成することができます:

そして、Set Variableノードのマッピングを、スプレッドシートの新しい行に挿入する値として再利用する:

これで私のフローは完成し、スイッチを入れる準備が整った。