データ関連付け

データ関連付け

はじめに

データ関連付けを使用すると、フロー内の一つの処理から得られた出力を、次の処理や段階への値として渡すことができます。この機能を通じて、フローの各段階でのデータの流れを設計することが可能になります。結果として、Zoho Flowと外部アプリケーション間のデータのやり取りが一貫性を持って行えます。

Zoho Flowの変数では、実行条件や処理に出力される値を保管するための項目です。変数の値は、ワークフローの各ステージの処理に基づいて、変換することがあります。



例:Googleカレンダーに新しい予定(イベント)を追加する際に、Slackチャンネルに通知を送信することを自動化したいとします。その際、通知には[新しい予定が作成されました]という標準メッセージの代わりに、[午前10時にコンテンツ戦略会議]といった、予定の詳細をより具体的に伝えるメッセージに設定することが可能です。これにより、チームはSlackとGoogleカレンダーの間にいったりきたりすることなく、必要な情報をかんたんに把握することができます。

関連付ける方法

  1. 処理を設定すると、利用可能なすべての変数が、設定画面の右側の[変数を挿入する]の下に表示されます。それまでのすべてのステップの変数を見ることができます。それらは、実行条件や処理内容に応じて分類されます。

  2. 実行条件や処理をクリックすると、それに関連するすべての変数を確認できます。
  3. 対象処理の項目をクリックし、関連付けたい変数を選択します。

  4. 処理に必要な変数を関連付けます。変数の関連付けるには上限はありません。

注意:変数を正しい項目に関連付けてください。変数の左側のアイコンは、各変数が提供するデータの種類を示しています。

カスタム値の関連付け

問い合わせを作成すると同時に、関連するタスクも作成する場合があります。そのような場合、ワークフローで、特定の問い合わせIDを指定すると、その後に作成される問い合わせのタスクがすべて、同じ問い合わせIDの下に作成されてしまいます。


このような状況を避けるためには、前のステップでの問い合わせIDは、タスクを作成する処理のカスタム項目に関連付けます。

そうすることで、前の処理から問い合わせIDが取得され、それに基づいてタスクが作成されます。


Zoho Flowにおいて、変数にカスタム値を設定する際には注意が必要です。特に、ドロップダウンで選択された項目によって他の変数の内容が変わるような場合、カスタム値の使用はできません。たとえば、Zoho Formsで作成されたフォームの例で考えてみましょう。このフォームの項目はZoho Flowのワークフローで変数として利用できますが、フォームごとに項目やその値が異なるため、これらの変数にカスタム値を設定することはできません。この理由は、カスタム値を通じて引き渡すデータは、「次や」は要らない他の処理で利用する変数が正しく扱われずに処理される可能性が高くなるためです。

データと構文の理解

Zoho Flowでは、アプリケーション間でのデータやペイロードが主にJSONの形式で交換されます。JSONでは、「,」、「{ }」を使って、データを区切り、「[ ]」でデータをグループに構成します。 「テストと不具合調査」の機能を使用することで、フローの実行条件や処理で受信したJSONペイロードの内容を確認することができます。JSONには、オブジェクト配列の2種類のデータ構造が定義されています。

注意:変数や項目名は、英数字で構成する必要があります。他の言語はサポートされていません。

オブジェクト

オブジェクトは、「{ }」の中にある一連の項目です。JSONにおいては、オブジェクトのデータ項目はキーと値のペアで構成されています:

例:
  1. contact: {
  2. "name" : "Frank",
  3. "email" : "frank@zylker.com"
  4. }

上記の例では、'contact' というオブジェクトにて'name' 'email'のキーがあります。'name' と'email' のキーには、「Frank]「frank@zylker.com」のそれぞれの値があります。特定の変数にキーを関連付けたい場合は、以下の形式を実現できます:

  1. ${source.object.key}

上記のコードには:
ソース:実行条件や処理で、データの本体を受信するための変数名です。
オブジェクト :オブジェクトの名前です。
キー : 項目に関連付ける値を持つキーの名前です。

一覧または配列

配列あるいは一覧では、[ ] に囲まれている一連の値です。配列では、コンマで区切られた複数の文字列や、複数のキーと値のペアでのオブジェクトで構成されます。

例:

  1. "cars" : [
  2. {"name" : "BMW" , "model" : "X3"},
  3. {"name" : "Audi" , "model" : "Q5"},
  4. {"name" : "Ford" , "model" : "Mustang"}
  5. ]

一覧や配列要素の関連付け

Zoho Flowの実行条件や処理の変数には、配列のが返された場合、配列全体を抽出する必要はなく、数式エディターを利用して、特定の要素だけを抽出することができます。また、フローの編集画面にある「テストと不具合調査」機能を使用すれば、フローの実行条件や処理で受け取るJSON本体を確認することが可能です。

配列内には、データ要素のインデックス(指数)は「0」から始まります。そのため、プログラミングやコードの中で、配列の最初の要素は「0」、次のは「1」のように指示されます。具体的には、変数に特定の要素に関連付けるには、以下の形式で実現できます。

  1. ${source.array[n].key}

上記のコードには:
ソース:実行条件や処理で、本体のデータを受信するための変数名です。
配列 :対象の値を含む配列の名前です。
n : 配列要素のインデックスです。
キー:特定の項目に関連付ける値の名前です。

例:以下の例の配列には、(実行条件からの出力)、車のモデル「Audi」)を別の処理の項目に関連付けたいとします。 
  1. "cars" : [
  2. {"name" : "BMW" , "model" : "X3"},
  3. {"name" : "Audi" , "model" : "Q5"},
  4. {"name" : "Ford" , "model" : "Mustang"}
  5. ]

配列にて、2番目の要素を次の処理に関連付ける場合、上記のコードには、キーは「model」とnは「1」にして、以下のように入力できます。
${trigger.cars[1].model}

実務的な使用例

Zoho Books-行項目エントリの抽出

Zoho Booksの取引の項目をZoho Flowに取り込むことは、配列の要素を変数に関連付けることの一般的な例です。たとえば、Zoho Booksのある取引の2番目の行の「説明」という項目を抽出して、Zoho Booksの変数に関連付けるには、上記の計算式は以下のように実現することが可能です。

  1. ${trigger.line_items[1].description}


Calendly - 質問と回答から個々の回答を引き出す

例:Calendlyで、「Event scheduled by invitee」(参加者による設定した打ち合わせ)を実行条件とするワークフローを設定しているとします。イベントを登録するときに、参加者の詳細などは、「登録フォーム」に入力して、保存されます。その際、登録フォームには、項目(キー)と詳細(値)のデータから、最初の項目だけ、たとえば、参加者の名前やIDを抽出するには、インデックスを用いて、以下のコードで実現できます。

  1. ${trigger.questions_and_answers[0].answer}

日付と日時の値を関連付けおよび書式設定

アプリケーション間で日時データを交換する際は、受信側アプリケーションがそのデータを正しく識別し、適切に処理することが重要です。Zoho Flowで、日付や時刻のデータを扱う場合、受信するアプリケーションの形式に合わせて、日付や日時のデータを自動的に調整することが可能です。

Zoho Flowで日付/時刻項目のデータをフォーマットするには:
  1. 変数を日付/時刻項目に関連付けます。
  2. 項目の下にある[日付と時刻をフォーマットする]をクリックします。



  3. ソースアプリで使用されている形式に合わせて、入力の日付と時刻の形式を設定します。形式について不明な点がある場合は、アプリのAPIドキュメントを参照します。
  4. [保存する]をクリックしてください。
チームやアプリが複数のタイムゾーンにまたがる場合、タイムゾーンの時差に応じて、時間を調整/形式することが可能です。

これにより、フローが実行されるたびに、日付と時刻のデータは自動的に適切なフォーマットに変換され、アプリケーション間でスムーズに交換されます。

注意:
  1. 日付の形式が設定されていない場合、データ元のアプリの値はそのまま、受信するアプリに渡されます。
  2. 処理やアプリごとにタイムゾーンが設定されていない場合、組織のZoho Flowアカウントの初期設定にされているタイムゾーンが適用されます。

実行条件(および処理変数)の全体関連付け

フローの実行条件や処理により受信された変数の値は、カスタム関数やキーと値のペアに渡したい場合、以下のコードを使用できます。
上記の「source」は、
実行条件や処理に関連付けられた変数名を意味します。たとえば、フローの実行条件により受信されたすべての変数を示す場合は、`${trigger}`を使用します。


注意:  実行条件に割り当てられる変数名は、初期設定では'trigger'です。スニペットで同じ名前を使用していることを確認してください。 また、変数を関連付ける項目のデータ型がMap(Key-Value)であることを確認してください。


システム変数の関連付け

システム変数では、コンテキストや状況に応じて変更するデータを変数に関連付けることができます。


  1. 現在の日付:タスクが実行された日付です。タスクが実行された日付です。(形式:yyyy-MM-dd;例: 2021-11-29)
  2. 現在の日時:タスクが実行された日時です。(形式:: yyyy-MM-ddThh:mm:ss;例: 2021-12-19T23:30:30+05:30)

関連付け関数の出力キーの関連付け

[変数を投入]メニューの[Execute]機能を使用することで、カスタム関数に返される、複数のキーと値のペア(オブジェクト)の中から、特定のキーの値を変数に関連付けることができます。

例:名前を姓と名に分けるカスタム関数を作成した場合、[姓]と[名]の項目は(キー)[変数を挿入する]メニューから、個別の変数として利用することができます。手順は以下の通りです:
  1. カスタム関数を作成してから、[変数を挿入する]メニューから、カスタム関数の該当する関数を選択します。



  2. [実行する]をクリックします。
  3. 関数をテストするためにサンプルデータを入力し、[実行する]をクリックします。
  4. カスタム関数の出力を確認した後で、[テストデータを使用する]をクリックし、カスタム関数で出力されたキーを変数として使用できます。



  5. カスタム関数のキーを、必要に応じてフローの変数に関連付けます。



カスタム関数を設定または変更する際には、その関数を実行してテストデータの出力から、キーを取得する選択肢があります。

データ関連付けのよくある問題

変数の必須項目に関連付け
変数を必須項目に関連付ける場合は、変数が常にデータを返すことを確認します。フローが実行される際に、項目が空である場合、フローは失敗します。

フロー設定後の実行条件や処理の変更
フローを設定した後、実行条件や処理を変更する場合は、それに対応する関連付けられた項目も修正する必要があります。

無効な関連付け
フロー内では、「name」や「date」など、複数のステップで同じ名前の変数を使用することが一般的です。しかし、これらの変数は同じ名前でも異なる値を持つことがあります。そのため、変数を正しく対応するステップに関連付けることが重要です。

「$」のテキストとして使用
 テキスト内に $ 記号を含める場合は、$$ を使用します$記号を1つだけ使用すると、フローはそれを変数と見なします。
例:$$${trigger.price} は出力を$記号つきで表示します。