【開発備忘録】リストビュー上で選択した複数レコードへの自動化処理作成

今回は、意外とお客様からご要望の多い「リストビューで選択したレコードへの自動化処理」の作成方法についてご紹介します。

はじめに

Salesforce案件において、以下のような要望は多いのではないでしょうか?
「リストビュー上で処理対象のレコードを選択し、一括で自動化処理を行いたい!」

私も、最近携わった案件で「リストビューで任意の部品を複数選択し、1つのボックスに梱包後、出荷したい!」といった要望をいただきました。
実際に、私がどのような仕様を提案をしたのか、備忘録的に書いていきたいと思います。

※オブジェクト、項目、データは実案件で使ったものではないのであしからず m(__)m

作成したオブジェクトと項目

部品オブジェクト(Parts__c)

サプライヤーから仕入れた部品が格納されているオブジェクト

以下、作成したカスタム項目です。
 ◆単価(通貨)
 ◆数量(数値)
 ◆合計金額(数式)※単価 × 数量
 ◆ボックス(参照関係)※ボックスオブジェクトを参照

ボックスオブジェクト(Box__c)

部品の梱包時に作成されるオブジェクト(1つのボックスに、複数部品が紐づく)

以下、作成したカスタム項目です。
 ◆出荷先(参照関係)※取引先オブジェクトを参照
 ◆出荷予定日(日付)

イメージ図

フロー説明

フロー全体図

作成変数

作成した変数は2つです。

ids変数
 リストビューで選択されたレコードのIdを受け取るための変数です。
 Idsのように先頭を大文字にしてしまうと機能しないので注意しましょう。​

カウント変数
 選択されたレコードの件数を格納しておくための変数です。画面表示時に使います。

要素説明

ids変数の中身がnullかどうかを確認し、リストビュー上でレコードが選択されたかを判断します。
選択されていれば正常に処理が進み、なければエラー画面に遷移します。

エラー画面です。

選択されたレコード件数をカウント変数に格納します。
演算子を「次の数と一致する」にするのがポイントです。

最初に遷移する画面です。
選択されたレコード件数をテキストで表示しています。
「出荷先」と「出荷予定日」を入力できるように、コンポーネントを配置します。

ルックアップ検索のコンポーネントは、つまずいた部分なのでポイントを書いておきます。
各項目について、以下のように設定しましょう。
 ◆API参照名 → 任意でOK
 ◆オブジェクトAPI参照名 → Box__c
 ◆項目API参照名 → ShippingDestination__c
 ◆表示ラベル → 任意でOK

私は最初、取引先への参照項目取引先名で検索して値を入力する認識だったため、以下のように設定してしまいつまずきました・・・。みなさんは気を付けましょう・・・。
 ◆オブジェクトAPI参照名 → Account
 ◆項目API参照名 → Name

画面上で入力された「出荷先」と「出荷予定日」を持つボックスレコードを作成します。

ids変数に含まれるレコードIdを持った部品レコードを絞り込みます。
部品レコードの「ボックス」へ、作成したボックスレコードのIdを入力することで、ボックスレコードと部品レコードの紐づけを行います。

処理完了後に遷移する画面です。
作成したボックスレコードへアクセスできるようにリンクを表示しています。

ボックスレコードの詳細画面からリンクを取得後、レコードId部分をフローの中で作成されたボックスレコードのIdで書き換えることで、作成されたレコードへのアクセスリンクを表示することが可能です。

※以下、画像の中で設定しているリンクURL
https://●●●●●●●●(インスタンス名).develop.lightning.force.com/lightning/r/Box__c/{!CreateBoxRecord}/view


これでフローは完成です。
次に作成したフローを呼び出すためのボタンを作成しましょう。

ボタンの作成とリストビューへの配置

画面フローを呼び出すボタンの作成

「ボタン、リンク、およびアクション」より、「新規ボタンまたはリンク」を押下します。

任意のボタン名を入力し、表示種別に「リストボタン」を選択します。
「チェックボックスの表示 (複数レコード選択用)」にチェックをお忘れなく。(これを忘れると複数選択できなくなります)

画面フローを呼び出すには、コンテンツソースを「URL」にし、以下のURLを設定します。
/flow/(作成したフローのAPI名)?retUrl=(リストビューを開いたときに表示されるURL)

※以下、画像の中で設定しているURL
/flow/BoxCreateFlow?retUrl=/lightning/o/Parts__c/list?filterName=00BIS000004fwtN2AQ

リストビューへの配置

リストビューボタンレイアウトより、作成したボタンを使用可能にします。

※リストビューボタンレイアウトが表示されない方へ

オブジェクトの詳細より、「検索を許可」にチェックをつけると、リストビューボタンレイアウトが表示されるはずです。

動作確認

部品タブより、リストビューへアクセスします。

ボックスに梱包したい部品にチェックを付けて、「ボックス作成」ボタンを押下します。

「出荷先」と「出荷予定日」を入力して、「作成」ボタンを押下します。

レコードが作成されました。
「レコードへ遷移」を押下し、作成されたボックスレコードを確認してみましょう。

リストビューで選択した部品が紐づけられたボックスレコードが作成されていることを確認できました!

最後に

今回は「レコードを複数選択して、1つのレコードに紐づける」という処理を作成しました。
これを応用して、商談のステータスをまとめて更新したり、取引先の担当者をまとめて自分にしたり・・・など利用できそうなシーンはさまざまあるように感じました。

「要望自体は別だけど、ロジックとしては似ている」
この感覚が身に付くと、お客様からいただいた要望に対して、即座に対応可否を回答できるようになります。

私もまだまだですが、日々の開発の積み重ねで培っていきたいですね!