300件を超えるリストビューを一括で削除できないかという相談から方法を調べてみました。
Ideaにもあり、意外と大量のリストビューの削除で困っている方は多いようでした。
以前の記事
「フローの全バージョンのメタデータを取得する」で初めて使ったWorkbenchを今回も使用する方法で紹介いたします。
実際にお客様へサポートするときのような手順を記事にしましたので、長い記事となっています。
リストビューの削除のメイン作業は、以下の2~4になります。
概要だけ確認されたい方は2~4のみお読みください。
目次
1.Sandboxの作成
2.削除マニフェストファイルの作成
3.Zipファイルの作成
4.Workbenchでリストビューを削除する
5.削除後にデータを突合し、検証する
6.本番環境のリストビューを削除する
⚠️注意
・Workbench は無料で使用できますが、Salesforce.comの公式製品ではありません。
・Workbench は、Salesforce.comのサポート対象製品ではありません。
・Workbenchは正式にテストまたは文書化されていません。
・Workbench に関する質問や支援については、
Workbench サポート (英語) を参照してください。
・リストビューの
共有設定が「自分のみがこのリストビューを表示できる」の場合は、この方法では削除できません。
1.Sandboxの作成
Developer Sandboxを用意します。
Sandboxの作成、更新方法はSalesforceヘルプや、ネット検索で手順が沢山ありますので、こちらでは割愛させていただきます。
<参考>
・Salesforceヘルプ:
Sandbox の作成、コピーまたは更新・Trailhead:
Salesforce 組織で Sandbox をセットアップする2.削除マニフェストファイルの作成
ここでは、「destructiveChanges.xml」という削除マニフェストを作成する手順を紹介します。
参考:
Ant 移行ツールガイド:Ant 移行ツールの使用 / 組織からのファイルの削除完成はこんな感じです。

1.データローダーでListViewレコードをエクスポートします。
①[Export]をクリックし、1で作成したSandboxにログインします。

②[Show all Salesforce objects]にチェックを入れ、検索窓がある場合は“リストビュー”と入力し、「
リストビュー(ListView) 」を選択します。

③[Browse...]をクリックし、エクスポート先を選択し、[Next > ]をクリックします。

④[The generated query will appear below. You may edit it before finishing.]の下枠に以下のようなクエリを入力し、[Finish]をクリックします。
Select Id, SobjectType, DeveloperName, Name, LastViewedDate FROM ListView Order by SobjectType
参考として、エクスポート時に「LastViewedDate(リストビューの最終表示日時)」を追加しています。
その他の項目については「
Salesforce プラットフォームのオブジェクトリファレンス:リファレンス / 標準オブジェクト / ListView」を参照してください。

2.エクスポートしたデータを加工します。
サンプルではExcelで加工する手順を紹介します。
①エクスポートしたCSVファイルをExcelに読み込みます。

②削除するリストビューに印をつける列を追加し、削除するリストビューに共通の値を入力します。
サンプルでは「○」としました。

③2.2.②の印の列の右隣の列に以下のような数式を追加します。
destructiveChanges.xmlファイルに削除するリストビューを入力するための数式です。
=" <members>"&B2&"."&C2&"</members>"
<数式の解説>


④2.2.②の削除印の値がある行だけフィルターで抽出します。
サンプルでは、この後のエラー説明のため、68行目の
共有設定が「自分のみがこのリストビューを表示できる」のリストビュー「チロスケ専用リストビュー」を入れています。

⑤メモ帳に以下のサンプルをコピーし、貼り付けます。
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<name>ListView</name>
</types>
</Package>

⑥2.2.⑤の「<types>」と「<name>」の間に、2.2.④で抽出した行の数式の列をコピペします。

⑦任意の場所に、ファイル名「destructiveChanges.xml」で保存します。

⑧Excelファイルを任意の名前で保存します。
※この後の検証でこのファイルを使います。
3.Zipファイルの作成
1. 「package.xml」を作成します。
メモ帳に以下のサンプルをコピーか、
Ant 移行ツールガイドからコピーをして貼り付けてください。
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<version>59.0</version>
</Package>

2.任意の場所に、ファイル名「package.xml」で保存します。

3. 「package.xml」と「destructiveChanges.xml」を選択し、Zipファイルにします。
画像はWindowsの場合です。

4.Workbenchでリストビューを削除する
2.「Environment」でProduction(本番)、またはSandboxを選択し、「I agree to terms of service」にチェックを入れて、[Login with Salesforce]ボタンをクリックします。
※
最初は検証のため、Sandboxを選択してください。
※冒頭の注意事項と同様の内容が、英語ですが記載されています。

3.Salesforceにログインします。
※すでにSalesforce組織にログインしているブラウザでWorkbenchを実行している場合は自動的に接続されます。

4.[許可]をクリックします。

5.上部の[migration]をクリックし、[Deploy]をクリックします。

6.[ファイルを選択]をクリックし、3.3で作成したZipファイルを選択します。

7.「Rollback On Error」と「Single Package」にチェックを入れ、[Next]をクリックします。

8. [Deploy]をクリックします。
※件数が多いと時間がかかります。

9.完了すると、ステータスが確認できます。
エラーとなっている場合は、Resultsの「componentFailures」を展開してエラーの内容を確認します。

このエラーは、削除できない共有設定「
自分のみがこのリストビューを表示できる」のリストビューが「destructiveChanges.xml」に入っていました。
エラーの場合は、ほかのリストビューも削除は実行されません。

「
自分のみがこのリストビューを表示できる」のリストビューを取り除いて、再度Deployし、成功した画面です。

Salesforce組織の画面上でも確認してみます。
「取引先」の削除したいリストビューが消えています。

「カスタムのオブジェクト」の削除したいリストビューも消えています。

5.削除後にデータを突合し、検証する
正しく削除が行われたか、最初にエクスポートしたリストビューのデータと、削除後にエクスポートしたデータを突合させ検証します。
ここで紹介する方法は一例です。ほかの方法でも問題ありません。
1.データローダーで「リストビュー(ListView)」のデータをエクスポートします。
手順は、「2.削除マニフェストファイルの作成の1」と同じです。
2.削除前後のリストビューのレコードIDで突合します。
①「2.削除マニフェストファイルの作成の2」のExcelファイルを開き、先ほどエクスポートした5.1の削除後のCSVファイルを読み込みます。

②削除前にエクスポートしたデータを読み込んだシートの列に、以下のような数式を最終行まで入力します。
※太字の箇所は5.2.①で読み込んだシート名です。
=ISERROR(VLOOKUP([@ID],ListView_削除後!A:A,1,0))

③フィルターをかけて、削除印の行と、そうでない行を表示させ、5.②の数式結果が以下のようになっていることを確認します。
・削除印あり→TRUEのみ
・削除印なし→FALSEのみ

ここで、正しくない場合は、基本的には「1.Sandboxの作成」からやり直しになります。
6.本番環境のリストビューを削除する
1.バックアップ用のSandboxを作成します。
手順は、「Sandboxの作成」と同じです。
最悪、誤ってリストビューを削除してしまっても、こちらのSandboxから変更セットでリリースできます。
2. Workbenchで本番環境にログインし、リストビューを削除する。
「4. Workbenchでリストビューを削除する」の手順と同じです。
4.2.の「Environment」でProduction(本番)を選択し、以降は同じ手順です。Zipファイルも同じものを使用します。
おわり