便利な Sコントロール
次のサンプルを使用して、Sコントロールの使用を開始します。
必要なエディション
| 使用可能なインターフェース: Salesforce Classic |
| 使用可能なエディション: Contact Manager Edition、Group Edition、Professional Edition、Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition |
| 使用可能なインターフェース: Salesforce Classic |
カスタムボタンとカスタムリンクを使用可能なエディション: すべてのエディション Sコントロールを使用可能なエディション: Contact Manager Edition、Group Edition、Professional Edition、Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition 標準ボタンとタブのホームページの上書きを使用可能なエディション: Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition |
詳細ページの Sコントロール
Yahoo 地図の API と請求先住所の差し込み項目を使用して、取引先の地図を表示します。
Yahoo 地図
Yahoo 地図の API と請求先住所の差し込み項目を使用して、取引先の地図を表示します。HTML Sコントロールで次のコードを使用し、それを取引先詳細ページレイアウトに追加します。
<html>
<head>
<script type="text/javascript"
src="http://api.maps.yahoo.com/ajaxymap?v=3.0&appid=YahooDemo">
</script>
<style type="text/css">
#mapContainer {
height: 200px;
width: 100%;
}
</style>
</head>
<body>
<div id="mapContainer"></div>
<script type="text/javascript">
// Create a map object
var map = new YMap(document.getElementById('mapContainer'));
// Display the map centered on given address
map.drawZoomAndCenter("{!Account.BillingStreet}, \
{!Account.BillingCity},\
{!Account.BillingState},\
{!Account.BillingPostalCode}", 3);
// Set marker at that address
map.addMarker("{!Account.BillingStreet}, \
{!Account.BillingCity},\
{!Account.BillingState},\
{!Account.BillingPostalCode}", 3);
</script>
</body>
</html>標準ボタンとタブのホームページを上書きする Sコントロール
商品を商談に追加する場合に、標準ページの代わりに独自のコードを使用したい場合があります。
商品の追加の上書き
次の Sコントロールサンプルを使用して、差し込み項目を使用するデータ値をレコード詳細ページから、商談の [商品] 関連リストの [商品の追加] ボタンを上書きするカスタムSコントロールに渡します。このタイプの上書きでは、主オブジェクトおよび従オブジェクトから差し込み項目を関連リストのボタンに含める方法を示します。たとえば次のコードには、商談商品の主従関係で主側にある商談の差し込み項目が含まれています。
<html>
<head>
<script type="text/javascript"
src="/soap/ajax/13.0/connection.js">
</script>
</head>
<body>
<b>Opportunity Info:</b>
<br>
Opportunity ID: {!Opportunity.Id}
<br>
Opportunity Name: {!Opportunity.Name}
<br>
Opportunity Record Type: {!Opportunity.RecordType}
<br>
</body>
</html>この機能を実装するには、提供されたスペースにコードを挿入する前のコンテンツを使用して HTML Sコントロールを作成します。次に、Sコントロールを使用して、商談商品オブジェクトから商品の追加アクションを上書きします。この例は、商談にレコードタイプがあることを前提としています。
リードの編集の条件付き上書き
特定の条件に応じて標準アクションまたはカスタムSコントロールにリダイレクトするように、標準アクションを条件付きで上書きすることができます。たとえば、リードの対応期間が 30 日を超えている場合に別の Sコントロールを使用してリードを編集することがあります。次の例を使用して、リードの対応期間が 30 日を超えているかどうかを評価する Sコントロールを作成し、超えている場合にはカスタムSコントロールを実行してリードを編集します。それ以外の場合は、標準のリード編集アクションを使用します。
<script type="text/javascript">
//determine if the lead has been open longer than 30 days
if ({!IF(ISPICKVAL( Lead.Status , "Open"), ROUND(NOW()- Lead.CreatedDate , 0), 0)} > 30)
{
//more than 30 days - display a custom scontrol page
window.location.href="{!URLFOR($SControl.EditLeadsOpenLongerThan30)}";
}
else
{
//30 days or less - display the standard edit page
window.parent.location.href="{!URLFOR($Action.Lead.Edit, Lead.Id, [retURL=URLFOR($Action.Lead.View, Lead.Id)], true)}";
}
</script>これを組織で実装するには、対応期間が 30 日を超えているリードの編集に使用する Sコントロールを作成します。この Sコントロールに EditLeadsOpenLongerThan30 という名前を付けます。 次に、前のサンプルコードを使用して、リードの対応期間が 30 日を超えているかどうかを判断する Sコントロールを作成し、超えている場合には EditLeadsOpenLongerThan30 Sコントロールを使用してリードの編集アクションを上書きします。
前のサンプルコードの最初と 2 番目の if ステートメントの違いに注意してください。最初のステートメントは、ブラウザーで評価される JavaScript if ステートメントです。2 番目のステートメントは、サーバーで評価され 1 つの値 (リードが進行中の場合はその日数、リードが進行中でない場合はゼロ) を返す Salesforce IF 関数です。
取引先責任者の編集の上書き
取引先責任者を編集する場合に、独自のコードを使用したい場合があります。次の Sコントロールサンプルを使用して、差し込み項目を使用するデータ値をレコード詳細ページから、標準詳細ページのボタンを上書きするカスタムSコントロールに渡します。
<html>
<head>
<script type="text/javascript" src="/soap/ajax/13.0/connection.js">
</script>
</head>
<body>
<b>Contact Info:</b>
<br>
Contact ID: {!Contact.Id}
<br>
Contact Name: {!Contact.FirstName} {!Contact.LastName}
<br>
</body>
</html>
この機能を実装するには、本文セクションにコードを挿入する前のコンテンツを使用して HTML Sコントロールを作成します。次に、Sコントロールを使用して、取引先責任者の編集アクションを上書きします。これにより、取引先責任者の詳細ページの [編集] ボタン、リストビューの [編集] リンク、すべての関連リストの [編集] リンクなど、使用可能なすべての場所で取引先責任者の編集アクションが上書きされます。
新規取引先の上書きの中断
標準ボタンを上書きすると、Salesforce 組織全体で使用できなくなります。ただし、標準アクションを上書きすれば、Sコントロールからそのアクションに無限ループにならずにリダイレクトできます。たとえば、取引先の [新規] ボタンを上書きし、独自のカスタムプロセスを実行し、標準の新規取引先アクションを無限ループにならずに再開することができます。これを行うには、URLFOR 関数の no override 引数を使用します。
<script type="text/javascript">
alert("Hi, I am demonstrating how to interrupt New Account with an override. Click OK to continue.");
window.parent.location.href="{! URLFOR($Action.Account.New, null, null, true)}";
</script>
この Sコントロールを実装するには、前のコンテンツを使用して HTML Sコントロールを作成します。次に、Sコントロールを使用して、新規取引先アクションを上書きします。
null に設定されます。この例では入力が必要ないため、URLFOR 関数の 3 番目の引数は null に設定されます。URLFOR 関数の 4 番目の引数は true に設定され、上書きが無視されて無限ループが回避されます。[取引先] タブホームページの条件付き上書き
タブホームページを条件付きで上書きし、特定の条件に応じて元のタブホームページを Sコントロールにリダイレクトできます。たとえば、特定のプロファイルを持つユーザーに対して、標準の [取引先] タブホームページの代わりに Sコントロールを表示する場合があります。次のサンプルコードを使用して、ユーザーが [取引先] タブをクリックしたときに、Recruiter プロファイルを持つユーザーには求人応募者情報を表示し、他のすべてのユーザーには標準の [取引先] タブホームページを表示する Sコントロールを作成します。
これを実装するには、まず採用担当者に表示するコンテンツを含む「ApplicantHomePage」という Sコントロールを作成します。次に、以下のコードを使用して、条件付き上書きロジックを実装する HTML 種別の Sコントロールを作成します。
<script type="text/javascript">
//determine the user profile name
var recruiter = {!IF($Profile.Name = "Recruiter", true, false)};
//when the profile is recruiter - display a custom s-control page
if (recruiter) {
window.parent.location.href="{! urlFor($SControl.ApplicantHomePage)}";
} else {
//when the profile is not recruiter - display the standard Accounts tab page
window.parent.location.href="{! urlFor( $Action.Account.Tab , $ObjectType.Account,null,true)}";
}
</script>最後に、ここで示す HTML Sコントロールを使用するように [取引先] タブを上書きします。この例は、「Recruiter」というプロファイルが組織に存在することを前提としています。
スニペットを含む Sコントロール
カスタムSコントロールにスニペットを含めて、共通のコードを再利用します。
スニペットを含める
次の例は、Web タブに表示するページにヘッダーを提供するスニペットを参照します。ページタイトルは「私のタイトル」になります。スニペットを参照するには、$Control グローバル変数を使用します。これを実装するには、「Resize_Iframe_head」および「Resize_Iframe_onload」という 2 つのスニペットを作成し、次のコードを含む「Resize_Iframe_sample」という HTML Sコントロールを作成します。
<html>
<body>
{!INCLUDE(
$SControl.Header_Snippet,
[title = "My Title", theme = "modern"]
)}
</body>
</html>
