🪆

Salesforce テキストを分割してコレクション化する汎用サブフロー

2025/03/27に公開

Salesforceにおいてフローを用いた実装は多く発生すると思います。
そんな中、様々なフローから呼び出して使用できるフローとしてサブフローを1つ作っておくと、同じ処理を使い回すことができるのでおすすめです。
今回は、「AAA,BBB,CCC」等のテキストを、区切り文字「カンマ(,)」等ごとに分割したテキストコレクションに変換するサブフローを紹介します。
※この記事の情報はSalesforce Spring’25段階の内容です。

フロー概要

・区切り文字を含むテキスト(例:AAA,BBB,CCC)
・区切り文字(例:,)
の2つを引数としてサブフローを起動し、
・区切り文字で分割されたテキストコレクション
を返す仕様のフローを作成します。

フロー完成イメージ

作成後のフローは以下のようになります。

構築内容

1.フロー種別の選択

新規フローを作成します。
フロー種別は「自動起動フロー(トリガーなし)」を選択してください。

2.リソースの作成

フロービルダーが立ち上がったらまず以下リソースを作成してください。

①変数

No リソース種別 API 参照名 説明 データ型 複数の値を許可 (コレクション) フロー外部での可用性
1 変数 delimiter 区切り文字 テキスト FALSE 入力で使用可能

No リソース種別 API 参照名 説明 データ型 複数の値を許可 (コレクション) フロー外部での可用性
2 変数 targetText 区切り文字を含むテキスト テキスト FALSE 入力で使用可能

No リソース種別 API 参照名 説明 データ型 複数の値を許可 (コレクション) フロー外部での可用性
3 変数 returnTextCollection 区切り文字で分割されたテキストコレクション テキスト TRUE 出力で使用可能

②数式

次に以下数式リソースを作成してください。

No リソース種別 API 参照名 説明 データ型
1 数式 LENtargetText 区切り文字を含むテキストの文字数 数値(小数点0)
LEN({!targetText})

No リソース種別 API 参照名 説明 データ型
2 数式 AddText 区切り文字を含むテキストから最初の区切り文字までの文字を抽出 テキスト
IF(
    CONTAINS({!targetText}, {!delimiter}),
    LEFT(
        {!targetText},
        FIND({!delimiter}, {!targetText}) - 1
    ),
    {!targetText}
)

No リソース種別 API 参照名 説明 データ型
3 数式 NextText 区切り文字を含むテキストから最初の区切り文字までの文字を除いたテキスト テキスト
IF(
    CONTAINS({!targetText}, {!delimiter}),
    MID(
        {!targetText},
        FIND({!delimiter}, {!targetText}) + LEN({!delimiter}),
        LEN({!targetText}) - FIND({!delimiter}, {!targetText}) - LEN({!delimiter}) + 1
    ),
    ""
)

3.確認

リソース作成後、リソース一覧は以下のようになっていればOKです。

4.コンポーネント構築

①決定

決定要素を配置し、以下のように入力してください。

②割り当て

決定要素の「継続」側に割り当て要素を配置し、以下のように入力してください。

③割り当て

上記割り当て要素の下にもう一つ割り当て要素を配置し、以下のように入力してください。

④要素に接続

最後の割り当て要素下の「+」から「要素に接続」を選択し、①の決定要素に接続してください。

以下のようになればOKです。

これで構築完了です!

⑤フローを保存

それではフローを保存しましょう。

⑥デバッグ

保存後、デバッグを使用して意図した動きをするか確認します。
試しに、以下のように引数を渡し実行してみます。

最後のテキストコレクションへの割り当てに[1,2,3,4,5]と入っており、分割されて格納されていることを確認できます。

⑦有効化

最後に有効化して完了です。

5.他フローからの呼び出し

他のフローからは、サブフロー要素を配置し先ほど作成したサブフローを選択すると呼び出しが可能です。

入力値を設定のところに、引数としての区切り文字とテキストコレクションに変換したい値を渡します。

サブフローを配置すると、変数として返ってきたテキストコレクションをループ要素などで使用できます。

まとめ

このサブフローを作成することで、区切り文字で区切られたテキストを簡単にテキストコレクションに変換できます。
これにより、他のフローでも同様の処理を再利用でき、開発効率が向上します。
フローのメンテナンスが容易になり、Salesforce内での一貫したデータ処理が可能になります。

株式会社アクトビ

Discussion