変数や数式の値を計算する
学習の目的
この単元を完了すると、次のことができるようになります。
- フローの 2 つのテキスト値を連結する。
- フローの数値や日付値を加算または減算する。
- フローの動的値を計算する数式を作成する。
- フローで数式の使用を検討する理由を説明する。
割り当て要素のデータを操作する
割り当て要素では、既存の変数データ全体を置換するのではなく、変更することもできます。
テキストを連結する
変数のデータ型がテキストの場合は、割り当て要素に追加演算子を選択できます。追加演算子を使用すると、現在の値の末尾にテキストが追加されます。
[Set Shipping Address (納品先住所を設定)] フローは順調に機能していますが、Flo はさらに、納品先住所がいつ頃得られた情報なのか把握したいと考えます。では、[Copy Address (住所をコピー)] 割り当て要素で、取引先の [説明] 項目に、取引先に納入先住所が指定された日付を付け足すメモを示す行を追加してみましょう。[説明] 項目に記載の内容を書き換えるのではなく、末尾にメモを追加するだけです。ただし、Salesforce ではテキスト変数をテキスト以外のリソース (日付変数や数値項目など) と組み合わせることができません。テキスト以外のデータを追加する場合は、TEXT() 関数を使用してテキスト以外の値をテキストに変換する数式を作成します。
まず、追加するテキストを含む数式を作成します。
-
をクリックして、[Toolbox (ツールボックス)] を表示します。
-
[New Resource (新規リソース)] をクリックします。
- [リソース種別] で [数式] を選択します。
- [API Name (API 参照名)] に、
frmChangeDateNote
と入力します。
- [データ型] で [テキスト] を選択します。(ここでは日付を追加しますが、テキスト型に変換されるため、テキスト項目に追加できるようになります。)
- 数式項目に次のテキストを追加します。
" Shipping Address added on " & TEXT()
- 括弧 ( ) 内にカーソルを置きます。
- [リソースを挿入…] 項目で [$Flow] > [現在の日付] を選択します。
-
[Check Syntax (構文を確認)] をクリックします。
関数がネストされている、長く複雑な数式にエラーがないか確認する場合は特に、構文チェッカーが役立ちます。
-
[Done (完了)] をクリックします。
次のステップに進む前に、この数式の中身を確認しておきましょう。
" Shipping Address added on " & TEXT({!$Flow.CurrentDate})
- 引用符で囲まれたフレーズの前後にスペースが挿入されています。この新しいフレーズと、先行する [説明] 項目の既存のテキストや、その後に続く日付をスペースで区切るためです。たとえば、末尾のスペースがなければ、この説明が「Shipping Address added on03-02-2023」(03-02-2023 に納入先住所を追加) と設定されます。
-
&
は、この前後のテキストを結合するよう数式に指示します。つまり、割り当ての追加演算子と同様に機能します。
-
TEXT()
関数は、( ) 内の値をテキストに変換して、テキスト項目で使えるようにします。
次に、[Copy Billing Address (請求先住所をコピー)] 割り当てにテキスト行を追加します。
- [Copy Billing Address (請求先住所をコピー)] 要素をクリックして、[要素を編集] を選択します。
-
[+ 割り当てを追加] をクリックします。
- [Variable (変数)] 項目で、[Account from Get Account Data (取引先データから取得した取引先)] を選択して、[Account Description (取引先の説明)] を選択します。ここで取引先の変数の [説明] 項目を設定するのは、変更の対象がこの変数であるためです。
- [Operator (演算子)]項目で、[Add (追加)] を選択します。
- [値] 項目で、[frmChangeDateNote] を選択します。ここで数式を選択するのは、説明に追加するテキスト値がこの数式に含まれるためです。
- フローを保存します。
[レコードを更新] 要素で取引先が更新されると、説明も変更されます。
簡単な計算を実行する
加算演算子を使用して、数値型または通貨型の変数に追加することもできます。ただし、この演算子は実際の算術計算を行います。たとえば、4 と 2 の数値を組み合わせた場合、42 ではなく 6 になります。また、減算演算子を使用して、数値や通貨の変数値から減算することもできます。
たとえば、次の割り当て要素では、商談の金額から割引が減算されます。商談変数の金額を [変数] 項目に挿入するのは、変更の対象がこの値であるためです。[Operator (演算子)]を [減算] に設定します。最後に、割引金額の変数を [値] 項目に挿入します。
ここで 2 行目に着目します。ここでは日付項目に加算されます。また、加算演算子や減算演算子を使用して、日付値から日数を加算または減算することもできます。この割り当て要素では、商談の完了予定日に 2 日が加算されます。
数式を使用して変更を自動的に計算する
frmChangeDateNote 数式を作成したときに、&
記号を使用して 2 つのテキストを結合しました。この記号は、割り当ての追加演算子と同じように機能します。それならば、なぜ &
記号を使用して、日付を直接 [説明] 項目に追加しないのでしょうか? & 記号は数式でのみ機能し、[説明] はロングテキスト項目です。ロングテキスト項目は数式の計算制限を超える可能性が高いため、Salesforce ではフロー数式でのロングテキスト項目の使用を認めていません。
この制限は、フロー内の数式に制約があり、複雑であることを示す一例です。フロー数式は計算時間が制限され、文字数も限られているため、複雑な数式は本質的にリスクを伴います。さらに、変数とは異なり、数式はフローの途中で変更することができません。では、数式はどのような場合に適しているのでしょうか?
数式は、購入した工具箱の中に入っていた特殊な形状のドライバーのようなものと考えることができます。あまり使うことがないかもしれませんが、同じ形状のネジを目にしたときに、そのドライバーがあってよかったと実感するものと思われます。つまり、数式は原則として、数式でしか解決できないような状況で使用します。
frmChangeDateNote 数式は、この原則の好例です。割り当て要素を使用して、日付を説明に追加することはできません。日付をまずテキスト値に変換する必要があるためです。この変換には、数式の TEXT() 関数が必要です。
リソース