ちょいメモ。
タイトルの通り、Salesforce のリストビューで選択したレコードを一括削除するボタンがほしい。
(リストビューとはこの画面)
実は以前にも似たようなことを試していて、
この時はリストビューではなく、レコード詳細画面にある関連リスト。
基本的に同じようなコードで OK だけど、今回は
- 削除前に確認ダイアログを表示したい
- 確認ダイアログでレコード名を表示したい
とか考えてると思ったよりややこしくなった。。。
以下、例としてリードのリストビューにボタンを実装する場合。
カスタムボタンの作成
コードはカスタムボタンとして設置する。
カスタマイズ > リード > ボタン、リンク、およびアクション > 新規ボタンまたはリンク
表示の種類、動作、内容のソースを以下のように。
参考:http://dackdive.hateblo.jp/entry/2014/04/26/015934
コード
カスタムボタンの作成画面の下部に以下のコードを貼り付け。
補足
削除は sforce.connection.deleteIds
に Id (の配列)を渡せばよく、
また、選択したレコードの Id だけなら {!GETRECORDIDS($ObjectType.Lead)}
で取れるので、
{!REQUIRESCRIPT('/soap/ajax/33.0/connection.js')}; var ids = {!GETRECORDIDS($ObjectType.Lead)}; sforce.connection.deleteIds(ids); window.location.reload();
だけでいい。
が、確認ダイアログにリード名(Name フィールド)を出したいとなると
sforce.connection.query
で一度レコードを取得する必要があり、なかなか面倒なことに。
リストビューにボタンを追加
作成したボタンは自分でレイアウトに追加しないと表示されない。
カスタマイズ > リード > 検索レイアウト > リード リストビュー
から。
動作
レコード左側のチェックボックスで削除したいレコードを選択し、
「一括削除」ボタンを押すと確認のアラートが表示される。
そのまま「OK」で無事削除されました。
リファレンス
Javascript GETRECORDIDS on Contract to Return Account Ids - Salesforce Developer Community