[Salesforce]レコードの詳細からカスタムボタンでapexを呼び出す

カスタムボタンを使用してJSからApexを呼び出して処理させてみる。

Apex

webServiceを使用して、apexクラスを作成しておく。
戻り値は文字列としておく。

1
2
3
4
5
global class SampleClass{
  webService static String hogeMethod(String id){
      return 'このレコードのIDは、' + msg_id + 'です。';
  }
}

カスタムボタン

リードの場合は以下にある。

新規ボタンまたはリンクをクリック。

動作JavaScriptを実行に、
内容のソースonClick JavaScriptにする。

内容は以下の用に記述。

1
2
3
4
{!REQUIRESCRIPT('/soap/ajax/31.0/connection.js')} 
{!REQUIRESCRIPT('/soap/ajax/31.0/apex.js')} 
var ret = sforce.apex.execute('SampleClass','hogeMethod',{id:"{!CustomObject__c.Id}"}); 
alert(ret);

このカスタムボタンがクリックされると、このJSが実行される。
sforce.apex.executeで実行するapexとメソッドを指定している。
第一引数がクラス名。第二引数がメソッド。第三引数が引数、となる。
引数で実行しているレコードのIDを渡すように項目を差し込んでいる。

表示

表示は、レイアウトの編集で、ボタンから追加。

レコードの詳細からボタンをクリックするとIDが渡されて実行される。

参考

Apex in AJAX | Force.com Apex Code Developer's Guide | Salesforce Developers
カスタムボタン押下時にSFDC上のWebServiceをコールする方法 – Salesforce Developer Community

   このエントリーをはてなブックマークに追加