変数値を設定して変更する
学習の目的
この単元を完了すると、次のことができるようになります。
- フロー変数の値を変更する。 
 - 変数を使用して、複数のソースからデータを受け入れる。 
 - 複数のパスを作成して、個々の割り当て要素を設定する。 
 
自在に変更できる柔軟性
フローに格納されたデータは実務上完璧であるため、その後変更する必要はないのが理想的ですが、そんなことはごく稀です。多くの場合は、フローでレコードのデータを取得して追加や削除、その他の変更を行い、更新済みのデータを元のレコードに戻します。
Pyroclastic のマーケティングチームとイネーブルメントチームは、お客様への連絡に納入先住所を使用したいと考えています。取引先の多くは必須の請求先住所を登録していますが、納入先住所は指定していません。Flo から、ユーザーに請求先住所をコピーするか、納入先住所を手動で入力するかのいずれかを選んでもらい、ユーザーの選択に基づいて納入先住所項目を更新するフローを作成するよう指示されました。

[レコードを更新] 要素を 1 つ設定したシンプルなレコードトリガーフローで済むように思われますが、1 つ問題があります。[優先度] 項目の値を設定して、ケース優先度を更新したときのことを覚えていますか? [優先度] 項目の値は 1 つのみでした。
![重大度 0 に設定された [優先度] 項目の値。](https://res.cloudinary.com/hy4kyit2a/f_auto,fl_lossy,q_70/learn/modules/flow-build-logic/set-change-variable-values/images/ja-JP/48d6b25f622a32486f84fbcbf3b86813_kix.5su2vr71njan.png)
この納品先住所のシナリオでは、納品先住所が請求先住所から取り込まれることもあれば、ユーザーが入力することもあります。理論上、[レコードを更新] 要素は次のようになります。
![納品先住所の [値] 項目に、「ユーザーの選択により、請求先住所またはユーザー入力」という吹き出しが示されているダイアグラム](https://res.cloudinary.com/hy4kyit2a/f_auto,fl_lossy,q_70/learn/modules/flow-build-logic/set-change-variable-values/images/ja-JP/7dff1929002f10b7af2d14ebb13dc6b2_kix.51potcfzw7wt.png)
これでは機能しません。[値] 項目のデータソースが 1 つでなければならないためです。請求先住所かユーザー入力のいずれかとすることはできず、どちらか一方にする必要があります。
そのため、値を中継する場所が必要になります。つまり、請求先住所かユーザー入力のいずれかの納入先住所を受け入れることができる「変数」です。
![請求先住所またはユーザー入力を受け入れ、納品先住所の [値] 項目にその情報を入力する変数を示すダイアグラム](https://res.cloudinary.com/hy4kyit2a/f_auto,fl_lossy,q_70/learn/modules/flow-build-logic/set-change-variable-values/images/ja-JP/906e012b5fea3176b9cc6e44d1e9f234_kix.9auoz9g2g0cx.png)
まず、ユーザーが請求先住所のコピーを選んだのか、住所の手動入力を選んだのかを判断し、それに応じて動作する手段が必要であるため、決定要素を使用します。
次に、変数から納品先住所の値を取り込んで設定する [レコードを更新] 要素を設定します。ところで、この変数の値はどのように設定するのでしょうか?
ここで登場するのが、割り当て要素です。割り当て要素によってユーザーが指定した住所が変数に割り当てられるため、この変数値を使用して納品先住所項目を更新できます。
割り当て要素
値を変数に割り当てる場合は、割り当て要素を使用します。この納品先住所のシナリオでは、変数の値を変更して 1 つのレコードの 1 つの項目を更新しますが、割り当て要素は他にもさまざまな用途があります。
変数は弁当箱のようなものです。弁当箱にさまざまな食べ物を詰められるように、変数にもさまざまな値を格納できます。

変数の値を設定するために、変数に値を割り当てます。たとえば、[優先度] [Equals (次の文字列と一致する)] [Sev 0] と指定します。
割り当て要素では、変数とその値を指定して、変数の値を設定します。どの割り当てステートメントにも演算子が含まれ、この演算子が変数の更新方法を判断します。次の例を考えてみます。

この例では、「次の文字列と一致する」演算子によって変数の現在の値が指定した値に置換されます。この結果、「優先度」変数に「Sev 0」という値が格納されます。
割り当て要素を使用してフローを構築する
では、Flo から依頼された納品先住所フローを踏まえた画面フローを作成し、Flo がそのフローを取引先 Lightning ページに組み込んで、納品先住所項目に入力済みの場合は非表示にできるようにします。
このバッジと「フローのデータとアクション」で学んだ内容に基づいて、最初に画面フローを作成します。
画面フローとテキスト変数を作成する
- フローを作成して、[画面フロー] 種別を選択します。 
 - 現在のレコードの ID を受け取るテキスト変数を作成します。 
 
- API 参照名: 
recordId - データ型: テキスト
 - 入力で使用可能: オン
 
[Get Records (レコードを取得)] 要素、画面要素、決定要素を作成する
- 現在のレコードの詳細を取得して、レコード変数に格納する [Get Records (レコードを取得)] 要素を追加します。 
 
- Label (表示ラベル): 
Get Account Data(取引先データを取得) - オブジェクト: 取引先
 - Filter Condition Requirement (検索条件の要件): 
- Field (項目): Account ID (取引先 ID) 
 - Operator (演算子): Equals (次の文字列と一致する) 
 - Value (値):recordId
 
 - Field (項目): Account ID (取引先 ID) 
 - 保存するレコード数: 最初のレコードのみ
 - レコードデータの保存方法: すべての項目を自動的に保存
 
- ユーザーに請求先住所をコピーするか、納品先住所を入力してもらう画面要素を追加します。 
 
- フローキャンバスで、[Get Account Data (取引先データを取得)] 要素の後で 
 をクリックします。 
 - 
[Screen (画面)] を選択します。 
 - [Label (表示ラベル)] に、
Enter Address(住所を入力) と入力します。
 - [コンポーネント] パネルから、[チェックボックス] を画面キャンバスにドラッグします。 
 
- [Label (表示ラベル)] に、
Use the billing address for the shipping address(納入先住所に請求先住所を使用する) と入力します。
 - [API Name (API 参照名)] に、デフォルト名を短縮した 
Use_the_billing_addressと入力します。
 
- 住所コンポーネントを、画面キャンバスのチェックボックスの下にドラッグします。 
 
- [API Name (API 参照名)] に、
ScreenShippingと入力します。
 - [Label (表示ラベル)] に、
Shipping Address(納入先住所) と入力します。
画面キャンバスは次のようになります。
 
- 
[Done (完了)] をクリックします。 
 - 決定要素を追加して、ユーザーが別の選択をした場合のパスを作成します。 
 
- Label (表示ラベル): 
Use Billing Address?(請求先住所を使用?) - Outcome 1 Label (結果 1 の表示ラベル): 
Selected(オンの場合) - Outcome 1 Condition Requirement (結果 1 の条件の要件): 
- Resource (リソース): Enter Address (住所を入力) > Use the Billing Address… (請求先住所を使用…) 
 - Operator (演算子): Equals (次の文字列と一致する) 
 - Value (値):True
 
 - Resource (リソース): Enter Address (住所を入力) > Use the Billing Address… (請求先住所を使用…) 
 - Default Outcome Label (デフォルトの結果の表示ラベル): 
Not Selected(オフの場合) - 
 をクリックしてサイドパネルを閉じます。 
 
- フローを保存します。[Flow Label (フローの表示ラベル)] に、
Set Shipping Address(納品先住所を設定) と入力します。
 
フローは次のようになります。

ユーザーが請求先住所をコピーするか、納品先住所を手動で入力できる画面フローが完成しました。ユーザーが選択したいずれかのソースから、納品先住所を [Get Account Data (取引先データを取得)] レコード変数にコピーする必要があります。
- ユーザーが請求先住所の使用を選択した場合は、レコード変数の請求先住所項目の値が納品先住所項目に割り当てられます。 
 - ユーザーが納品先住所の手動入力を選択した場合は、[住所を入力] 画面に入力した値がレコード変数の納品先住所項目に割り当てられます。 
 
次に、[Get Account Data (取引先データを取得)] 要素のレコード変数 (Account from Get Account Data (取引先データから取得した取引先)) のデータを更新します。このレコード変数に項目値を設定する割り当て要素を 2 つ作成します。1 つは ([Selected (オンの場合)] パスで) 請求先住所をコピーし、もう 1 つは ([Not Selected (オフの場合)] パスで) [住所を入力] 画面要素のデータをコピーします。
[Selected (オンの場合)] パスに割り当て要素を追加する
- [Selected (オンの場合)] パスで 
 をクリックします。 
 - [ロジック] セクションまでスクロールして [割り当て] を選択します。 
 - [Label (表示ラベル)] に、
Copy Billing Address(請求先住所をコピー) と入力します。
 - [Variable (変数)] で、[Account from Get Account Data (取引先データから取得した取引先)] を選択して、[Shipping City (市区郡(納入先))] を選択します。 
 - [Value (値)] で、[Account from Get Account Data (取引先データから取得した取引先)] を選択して、[Billing City (市区郡(請求先))] を選択します。 
 - 
[+Add Assignment (+ 割り当てを追加)] を 4 回クリックして、計 5 行表示されるようにします。
各 [Address (住所)] 項目を個別に設定する必要があるため、5 つの住所項目のそれぞれに割り当て行が必要です。
 - 追加した割り当て行で、次の値を選択します。 
 
- 
Account from Get Account Data> Shipping Country equals Account from Get Account Data> Billing Country
 - 
[Account from Get Account Data (取引先データから取得した取引先)]> [Shipping Zip/Postal Code (郵便番号(納入先))][Equals (次の文字列と一致する)] [Account from Get Account Data (取引先データから取得した取引先)] > [Billing Zip/Postal Code (郵便番号(請求先))]
 - 
[Account from Get Account Data (取引先データから取得した取引先)] > [Shipping State/Province (都道府県(納入先))] [Equals (次の文字列と一致する)] [Account from Get Account Data (取引先データから取得した取引先)] > [Billing State/Province (都道府県(請求先))]
 - 
[Account from Get Account Data (取引先データから取得した取引先)] > [Shipping Street (町名・番地(納入先))] [Equals (次の文字列と一致する)] [Account from Get Account Data (取引先データから取得した取引先)] > [Billing Street (町名・番地(請求先))] 
 
- 
 をクリックしてサイドパネルを閉じます。 
 - フローを保存します。 
 
[Not Selected (オフの場合)] パスに割り当て要素を追加する
- [Not Selected (オフの場合)] パスで 
 をクリックします。 
 - [ロジック] セクションまでスクロールして [割り当て] を選択します。 
 - [Label (表示ラベル)] に、
Set Address from Screen(画面の住所を設定) と入力します。
 - 
[+ 割り当てを追加] を 4 回クリックして、計 5 行表示されるようにします。 
 - 割り当て行で、次の値を選択します。 
 
- 
[Account from Get Account Data (取引先データから取得した取引先)] > [Shipping City (市区郡(納入先))] [Equals (次の文字列と一致する)] [Enter Address (住所を入力)] > [ScreenShipping] > [City Value (市区郡の値)]
 - 
[Account from Get Account Data (取引先データから取得した取引先)] > [Shipping Country (国(納入先))] [Equals (次の文字列と一致する)] [Enter Address (住所を入力)] > [ScreenShipping] > [Country Value (国の値)]
 - 
[Account from Get Account Data (取引先データから取得した取引先)] > [Shipping Zip/Postal Code (郵便番号(納入先))] [Equals (次の文字列と一致する)] [Enter Address (住所を入力)] > [ScreenShipping] > [Postal Code Value (郵便番号の値)]
 - 
[Account from Get Account Data (取引先データから取得した取引先)] > [Shipping State/Province (都道府県(納入先))] [Equals (次の文字列と一致する)] [Enter Address (住所を入力)] > [ScreenShipping] > [State or Province Value (都道府県の値)]
 - 
[Account from Get Account Data (取引先データから取得した取引先)] > [Shipping Street (町名・番地(納入先))] [Equals (次の文字列と一致する)] [Enter Address (住所を入力)] > [ScreenShipping] > [Street Value (町名・番地の値)]
 
- 
 をクリックしてサイドパネルを閉じます。 
 - フローを保存します。 
 
レコード変数の納品先住所項目に値が割り当てられます。この後、その納品先住所を取引先レコードに戻す必要があります。この割り当て要素によって新しい値がレコードに格納されることはありません。値を格納するには [レコードを更新] 要素が必要です。[Selected (オンの場合)] パスと [Not Selected (オフの場合)] パスが合流して 1 つのパスに戻った後に [レコードを更新] 要素を作成します。
取引先レコードを更新する
- フローキャンバスの 2 つの割り当て要素の後に、[レコードを更新] 要素を追加します。 
 - [Label (表示ラベル)] に、
Update Account(取引先を更新) と入力します。
 - [How to Find Records to Update and Set Their Values (更新するレコードを検索してその値を設定する方法)] では、[Use the IDs and all field values from a record or record collection (レコードまたはレコードコレクションからの ID およびすべての項目値を使用)] をオンのままにします。
この設定により、[Update Records (レコードを更新)] 要素で、レコード変数のレコードが更新されます。この要素は、レコード変数の ID 項目を使用して更新するレコードを判断し、レコードの項目を更新して変数の項目と一致させます。
 - [Record or Record Collection (レコードまたはレコードコレクション)] で、[Account from Get Account Data (Get Account Data の取引先)] を選択します。 
 - フローを保存します。 
 
これで完了です。次の 5 種類の要素を使用するフローを構築しました。
- 
[Get Records (レコードを取得)] 要素 (Get Account Data (取引先データを取得)) で、現在の取引先レコードの項目値を取得します。 
 - 
画面要素 (住所を入力) で、ユーザーに納品先住所を入力するか、請求先住所をコピーしてもらいます。 
 - 
決定要素 (Use Billing Address? (請求先住所を使用?)) で、ユーザーの選択が判断され、各選択肢のパスが作成されます。 
 - 2 つの割り当て要素で、請求先住所が納品先住所にコピーされるか (Copy Billing Address (請求先住所をコピー))、手動で入力された情報が納入先住所にコピーされ (Set Address from Screen (画面の住所を設定))、[Get Account Data (取引先データを取得)] レコード変数の納入先住所項目が変更されます。 
 - 最後に、[レコードを更新] 要素 (Update Account (取引先を更新)) で、レコード変数の変更された値が現在の取引先レコードに戻され、コミットされます。 
 

割り当て要素で他にどのようなことができるのか気になりませんか? 次の単元でこの点を見ていきます。
リソース
