
【Salesforce業務改善】SalesforceではExcelのような簡単データソートがどうあがいてもできないので、代替案をまとめてみた。
はい。
タイトルの通りです。(雑でごめんなさい😢)
なので今回は、どうしたら Salesforceでいい感じのデータソートができるのか、といった代替案について共有いたします。
どういうことか
知らない方もいるかもしれませんが、 Salesforceではレポートやリストビューで項目によるソートができるものの、同時に実行できるのは1つの項目だけなんです。
例えばimg1はデフォルトで開発環境に格納されている商談レコードのレポートで、こちらは取引名で昇順ソートをしています。

しかし、img2のようにフェーズでソートをかけると、img1で行った取引先名のソート結果はなくなり、フェーズでの昇順ソートの結果となります。

これだけだと「だからどうしたよ?」と思うかもしれないので別の状況で考えてみます。例えば個別契約書類の場合、一つの企業に複数の契約書類が紐づく状況となりますよね?
さらに、レコードへの登録順は書込み処理を開始した順番で登録されるわけでないため、前後することも十分あります。
そんな状況で、契約書類の番号と企業名の二つでソートをかけた場合、どちらかしかできないです。企業名でソートすれば、もしかするときれいに契約書類の番号が小さい順に行くかもしれませんが、絶対ではないです。
※3つ以上でのソートが必要な場合もう、、、
ではどうするのか?
それについての代替案はいくつかあるので共有します。
代替案
レポートのグループ化とソートの組み合わせ
こちらの方法を使えば、実質2つの項目によるソートと同等の結果を得ることができます。
※3つはもちろんできません。
※ただしグループを2つ設定すればできます。

img3の場合は、取引先名をグループ化することでソートの代用になっており、その中でフェーズを指定することで、別カウントとなるため、実質2つのソートになります。

img4ではグループを2つにしています。
レポートの見た目は微妙になりますが、こういった使い方をすることで実質項目3つによるソート結果を作ることもできます。
「じゃあこれでいいじゃん!?」
と思うかもしれませんが、1つ課題があります。
それはグループ化で指定した項目は、エクスポートすると、一番右端になるためカラムマップの順番が変わってしまいます。
img5をご覧ください

先ほどグループ化には取引先とリードを指定したと思います。
そのため右端に追加されてしまいます。
しかし、img1のようなカラムマップでないと困るような場合、この方法では対応できないですね。
※今時そんなこともないとは思うが、、、
ただし、出力結果は見ての通り、きれいに複数項目でのソート結果となるため、もしこのエクスポートデータを別のサービスへインポートする場合、項目名が一致していれば問題ないとかであればそのまま使用できますよね!
なので個人的にはこれでもいいような気はしています。
ソート専用の項目を作成
★例で商談にしているが、適してないですが、ご自身の環境で似たような使い方ができそうであれば置き換えて試してみて下さい。
ここでやろうとしていることはSalesforceが持つレコードのID情報とは別で、環境が変わっても変動しない完全に独立した値を項目データとして与えようということです。
今回の場合、例えば取引先オブジェクトに個別書類番号を与え、商談の開始日となる日付情報と組み合わせて商談ソート項目的なものを作成しました。

これにより商談それぞれに個別の値を付加することができました。
しかし、このままですと結局のところ項目1つの壁は突破できないため、他にも複数値を加えて個別のソート用の値を作成するしかないです。
また、今回の例で商談を使用したことでわかりにくくなっていますが、こちらのやり方ですと、個別の契約書だったりユニークでないといけないようなデータや明細データを複数レコードで作成する場合などに使用することもできるため、必ずしもダメではないです。
外部ツールでがんばる
最後です。
元も子もないですが、 Salesforceに拘らないのであれば、こうするほかありません。
例えば、ExcelやGoogleスプレッドシートなど複数項目でソートができるツールでデータを編集する。またはGoogle BigQueryなどで格納し直してきれいにするなどのやり方もあります。
※もちろん手間がかかります。
どうしても複数項目でのソートができないといけないなどの要件がある場合はこちらで頑張るほかないんです。
最後に一言
Salesforceさん、、、
世界中のユーザがずっと複数項目でのソートができることを夢見ているので対応して下さい、、、