Skip to main content
Build the future with Agentforce at TDX in San Francisco or on Salesforce+ on March 5–6. Register now.

クイックアクション、カスタムボタン、Apex の使用

学習の目的

この単元を完了すると、次のことができるようになります。

  • 項目の検証、値が事前入力されたレコードの作成、Visualforce ページへのリダイレクトを行う (JavaScript を使用する代わりに) クイックアクションを作成する。
  • JavaScript ボタンと同じ移動およびリダイレクト機能を実行するカスタム URL ボタンを使用する方法について説明する。
  • JavaScript ボタンの代わりに Visualforce カスタムボタンまたはクイックアクションを使用してリストの複数のレコードを操作する。

既存のボタンに代わるボタン

これまでは、JavaScript ボタンを凌ぐ優れた新機能を備えた Lightning Experience に現時点で移行すべき理由について説明してきました。ここでは、Salesforce Classic と Lightning Experience の両方で動作するソリューションを使用して、カスタム JavaScript ボタンの機能を簡単に移行する方法について説明します。

次の表は、JavaScript ボタンの使用事例と、Lightning の対応する (通常はより良い) 代替法を示しています。

JavaScript ボタンの上位の使用事例 Lightning の代替法 宣言型 (D)/プログラム型 (P)

項目の検証 (保存前)

クイックアクション (デフォルト値または数式を使用)

D

Apex トリガー

P

値を事前入力したレコードの作成

クイックアクション (デフォルト値または数式を使用)

D

レコードページへのリダイレクト

カスタム URL ボタン

D

リストビューレコードに対する一括アクション

クイックアクション

D

リストビューのカスタム Visualforce ボタン

P

Visualforce ページへのリダイレクト

Visualforce クイックアクション

P

Lightning Web コンポーネントアクション

P

入力に基づく値の事前入力

Lightning Web コンポーネントアクション

P

確認ポップアップ画面

Lightning Web コンポーネントアクション

P

API コール (Salesforce およびサードパーティ)

Lightning Web コンポーネントアクション

P

フィードバックポップアップ画面

Lightning Web コンポーネントアクション

P

サードパーティインテグレーション

Lightning Web コンポーネントアクション

P

ご覧のとおり、Salesforce には、JavaScript カスタムボタンの機能を変換する宣言型ツールがいくつもあります。

クイックアクション

クイックアクションは、JavaScript ボタンの一般的な多数の用途に対応します。クイックアクションには、特定のオブジェクトに基づくものや、グローバルなものがあり、後者はより一般的で、任意のレコードや Chatter フィードからアクセスできます。Salesforce にはクイックアクションがあり、ほぼどんなことでも実行できます。次に、いくつか例を示します。

項目値の検証

ユーザーがレコードを作成または更新するときに、特定の項目への入力を必須にしたい、あるいは特定の条件に従って入力されるようにしたいと思うことがあります。

たとえば、ユーザーが詳細な編集ページにアクセスしなくても ToDo を完了できるアクションを作成するとします。ただし、期日を設定しない限り ToDo を完了できないようにします。

ToDo オブジェクトに対するクイックアクションを作成すれば、この要件をすべて達成することができます。

  1. ケースのオブジェクト管理設定から、[ボタン、リンク、およびアクション] に移動します。
  2. [新規アクション] をクリックします。
  3. [アクション種別] で、[レコードを更新] を選択します。
  4. [表示ラベル] に Close Task (ToDo の完了) と入力します。
  5. [保存] をクリックします。

次に、[Close Task (ToDo の完了)] クイックアクションのレイアウトを更新して、アクションに表示する項目を選択します。項目プロパティを使うと、項目を簡単に必須や参照のみにすることができます。この例では、[割り当て先] 項目を必須にしました。

アクションレイアウトの項目プロパティ。

項目を設定して、アクションレイアウトを保存したら、ToDo レコードの任意の項目に定義済み項目値を追加できます。また、[状況] 項目に定義済み値を追加して、[完了] に変更しています。

[状況] の定義済み項目値。

アクションのレイアウトの設定が完了したところで、ToDo ページレイアウトを編集します。アクションをパレットの [モバイルおよび Lightning のアクション] カテゴリから [Salesforce モバイルおよび Lightning Experience アクション] セクションにドラッグします。

ページレイアウトへのアクションの追加。

これで、ユーザーが Lightning Experience と Salesforce モバイルアプリケーションの両方で ToDo レコードページから [Close Task (ToDo の完了)] アクションにアクセスできます。以下は、ToDo ページの [Close Task (ToDo の完了)] アクションの例です。

ToDo ページの [Close Task (ToDo の完了)] アクション。

[Close Task (ToDo の完了)] をクリックするとこのアクションが表示され、ユーザーはすばやく操作を実行して保存できます。

[Close Task (ToDo の完了)] アクションのオーバーレイ。

Salesforce モバイルアプリケーションでは次のようになります。

Salesforce モバイルアプリケーションの [Close Task (ToDo の完了)] アクション。

項目の値の事前入力

より高度な使用事例として、ユーザーがレコードを作成できるようにする一方で、1 つ以上の項目が連動項目の値に基づいて自動入力されるようにする場合が挙げられます。

たとえば、社内の営業チームの四半期売上目標が、通常は各自の顧客の年間収益の 25% に 10% を乗じた金額であるとします。けれども、必ずしもこの簡単な数式が適用されるわけではないため、商談金額に値が事前入力され、ユーザーがその値を変更できるようにしたいと考えています。ユーザーが詳細な商談レコードページにアクセスしなくても、項目をすばやく効率的に変更できるアクションを作成します。

このサンプルアクションを作成するには、以前に商談クイックアクションを作成したときと同じ手順を実行します。

  1. 取引先のオブジェクト管理設定から、[ボタン、リンク、およびアクション] に移動します。
  2. [新規アクション] をクリックします。
  3. [アクション種別] で [レコードを作成] を選択します。
  4. [対象オブジェクト] で [商談] を選択します。
  5. 適切なレコードタイプを選びます。
  6. [表示ラベル] に、「New Oppty (新規商談)」と入力します。
  7. [保存] をクリックします。

アクションレイアウトの項目を選択したら、[金額] 項目の定義済み値を追加できます。この例では、次の数式を使用しました。

Account.AnnualRevenue * 1.10 / 4

このアクションを取引先ページレイアウトに追加します。ユーザーがアクションを起動すると、項目に値が事前入力された状態で表示され、ユーザーがこの値を受け入れるか上書きすることができます。

[New Opportunity (新規商談)] アクションのオーバーレイ。

このアクションの素晴らしい点は、商談の作成時に使用するデータを商談の取引先から取得できることです。また Salesforce は、レコードのトラバーサルをサポートしているため、階層的な取引先がある場合、次のように親取引先から収益を取得できます。

Account.Parent.AnnualRevenue

数式の形式を覚えておく必要もありません。クイックアクションは宣言型で、Salesforce 数式ビルダーを使用します。

入力値に基づく Visualforce ページへのリダイレクト

Visualforce ページを作成して、ビジネスプロセスを強化できます。ユーザーは、カスタムボタン、アクションの上書き、タブなどさまざまな方法でこれらの Visualforce ページに移動できます。

Visualforce ページの利点の 1 つは、標準コントローラーを使用して、カスタマイズされたレコードページを作成し、事前検証、事前入力済み項目、数式などさまざまなものを追加できることです。

Salesforce Classic での JavaScript の一般的な用途は、レコードから値を読み込み、Visualforce ページにユーザーをリダイレクトする URL にその値を渡すことです。また、クイックアクションを使用して、ユーザーに Visualforce ページへのアクセス権を付与することもできます。Visualforce クイックアクションは、すでに説明した手順とほぼ同じプロセスで簡単に作成できます。唯一の違いは、アクション種別に [カスタム Visualforce] を選択することです。

Visualforce アクションの作成。

オブジェクト固有の Visualforce クイックアクションの場合は、Visualforce ページにオブジェクトの standardController を含めて、レコードデータにアクセスできるようにし、クイックアクション選択リストに Visualforce ページが表示されるようにする必要があります。

JavaScript ボタンの用途はおそらく、移動や、window.open(URL) コマンドと一定の変数を使用してユーザーを別のページにリダイレクトすることではないかと思われます。この大半は、Lightning Experience のカスタム URL ボタンまたはリンクで代用できます。

以下は、各種の URL ボタンおよびリンクと、Lightning Experience でのそのリダイレクト動作の一覧です。

カスタム URL ボタンまたはリンク Lightning Experience の動作

外部 URL

www.google.com

新しいタブで URL を開く

相対 Salesforce URL、表示

/{!Account.Id}

既存のタブでレコードのホームページを開く

相対 Salesforce URL、編集

/{!Account.Id}/e

既存のページに [編集] オーバーレイをポップアップする

相対 Salesforce URL、リスト

/001/o

既存のタブでオブジェクトのホームページを開く

$アクション URL、表示

{!URLFOR($Action.Account.View, Account.Id)}

既存のタブでレコードのホームページを開く

$アクション URL、編集

{!URLFOR($Action.Account.Edit, Account.Id)}

既存のページに [編集] オーバーレイをポップアップする

Apex トリガー

Apex トリガーは、当社のプラットフォームで長年サポートされてきたため、よくご存知のことと思います。Apex トリガーは、ユーザーがレコードの [保存] をクリックする前またはクリックした後に実行されるように設定できます。

保存前の検証や、項目への計算、入力が必要な場合は、Apex トリガーの使用を検討します。このトリガーは特に、サードパーティインテグレーションで役立ちます。Salesforce API を経由して、Salesforce Classic、Lightning Experience、Salesforce モバイルアプリケーションのすべてにルールが適用されるためです。

Apex トリガーについての詳細は、『Apex 開発者ガイド』を参照するか、「Apex トリガー」バッジを獲得してください。

カスタム Visualforce ボタンとクイックアクションを使用した一括アクション

Lightning Experience のもう 1 つの優れた機能は、リストビューで Visualforce ボタンの使用がサポートされていることです。この機能により、既存の Visualforce アクションを Lightning Experience で使用して、リストの複数のレコードを操作できます。その方法は、次のとおりです。

  1. Visualforce ページを作成します。以下は、複数の商談のフェーズおよび完了予定日を編集するサンプルコードです。
    <apex:page standardController="Opportunity" recordSetVar="opportunities" extensions="tenPageSizeExt">
       <apex:form>
          <apex:pageBlock title="Edit Stage and Close Date" mode="edit">
             <apex:pageMessages />
             <apex:pageBlockButtons location="top">
                <apex:commandButton value="Save" action="{!save}"/>
                <apex:commandButton value="Cancel" action="{!cancel}"/>
             </apex:pageBlockButtons>
             <apex:pageBlockTable value="{!selected}" var="opp">
                <apex:column value="{!opp.name}"/>
                <apex:column headerValue="Stage">
                   <apex:inputField value="{!opp.stageName}"/>
                </apex:column>
                <apex:column headerValue="Close Date">
                   <apex:inputField value="{!opp.closeDate}"/>
                </apex:column>
             </apex:pageBlockTable>
          </apex:pageBlock>
       </apex:form>
    </apex:page>
  2. 各自の Visualforce ページを参照するカスタムボタンを作成します。
  3. このボタンをリストビューに追加します。

クイックアクションを使用して、宣言的にリストビューに一括アクションを設定することもできます。一括クイックアクションは、クイックアクションをサポートし、Lightning Experience にリストビューボタンレイアウトのある、ケース、リード、取引先、キャンペーン、取引先責任者、商談、作業指示、カスタムオブジェクトで利用できます。

一括アクションを設定する手順は、次のとおりです。

  1. オブジェクトの [レコードを作成] または [レコードを更新] クイックアクションを設定します。
  2. クイックアクション追加したオブジェクトのオブジェクト管理設定から、[リストビューボタンレイアウト] に移動します。
  3. リストビューレイアウトを編集します。
  4. [Lightning Experience でのリストビューアクション] セクションで、ユーザーがリストビューの複数のレコードに対して実行できるアクションを追加します。
  5. 変更内容を保存します。

以下は、一括アクションが Lightning Experience にどのように表示されるかを示しています。

Lightning Experience の一括アクション。

これらの例からもわかるとおり、Salesforce には、JavaScript ボタンの機能を変換して Lightning Experience に移行できるようにする優れた機能が揃っています。

JavaScript ボタンの変換を開始する

組織には、数年の間に次々と構築された JavaScript ボタンが大量にある場合があります。そのため、移行や変換のプロセスに時間がかかるのではないかと思うかもしれません。けれども、移行作業は思っているほど難しくはありません。当社では、従業員が使用する社内の Salesforce 組織で JavaScript ボタンの分析を実施しました。その結果、ボタンの多くは現在使用されていないか、ユーザーが滅多に起動しないものでした。 

他にも、同一のボタンがさまざまなオブジェクトで重複していました。リストに目を通した結果、JavaScript ボタンの多くが、これまでに説明してきたソリューションに変換可能であることが確認できました。変換不能なものについても、その多くが Lightning Web コンポーネントアクションで対処できました。

プログラム型ソリューションのリストにある Lightning Web コンポーネントアクションが、JavaScript ボタンのさまざまな用途の代用になるものであることに気付いたのではないでしょうか? Lightning Web コンポーネントアクションは、クイックアクションフレームワークを基盤に簡単に構築できます。Lightning Web コンポーネントアクションについては、この次に詳しく説明します。

リソース

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む