Box for Salesforce開発の入門ガイド: パート1

Yuko Taniguchi
Box Developer Japan Blog
20 min readOct 3, 2022
Box for Salesforce

Dreamforceの週がやってきました。

今回、最も利用されているBox統合の1つであるBox for Salesforceの設定方法を解説するほか、最小限のコーディングで簡単にカスタマイズできる方法を紹介します。

それでは、始めましょう。

統合オプション

デモに進む前に、BoxとSalesforceの関係を水域に例えて見ていきましょう。

アムステルダムの運河

皆さんには、以下の4つの選択肢が用意されています。

社内に極めて特殊なユースケースがなければ、開発者ツールキットでほとんどの要件に対応できますが、ここでは、それぞれの違いについて詳しく説明します。

管理型パッケージのフォルダ構造は固定されています。管理型パッケージは、水域に例えると、池に似ています。違いは水があるかないかくらいです。Boxの権限は、Salesforceの権限と一致します。

近所にある池

開発者ツールキットを使用すると、利用可能なメソッドの一覧を使って、自身のニーズにさらに合うように管理型パッケージをカスタマイズできます。これらのメソッドは、管理型パッケージをインストールすると自動的に使用可能になります。開発者ツールキットは、川に例えることができます。川は、必要に応じて蛇行することもある比較的大きな水域で、グランドキャニオンのような印象的な自然の景観までも創り出します。Boxの権限は、Salesforceの権限と一致します。

グランドキャニオンを流れるコロラド川

Box SDK for Salesforceは、管理型パッケージとは異なるインストール環境を使用し、フル機能を備えたAPEXラッパーとして機能します。これにより、開発者ツールキットでは許可されていないAPI呼び出しを行うことができます。これは、水の量が多く、多様な野生生物や活動が多数存在する大きな湖や海に似ています。権限は全面的にカスタマイズできます。

シカゴとミシガン湖

Box REST APIは、Salesforceとはまったく別に存在します。このAPIは、問題の解決に、全面的にカスタマイズしたソリューションが必要な場合に使用する必要があります。これは大海に例えられます。奥が深く、幅広いソリューションを開発できますが、そのためには経験豊富なプロフェッショナルが持つ高いスキルが必要です。

ザントフォルトビーチ

次の表に、重要なポイントをすべてまとめました。

統合オプションのマトリックス

これで、水域に例えた説明は終わりましたので、次はチュートリアルに進みましょう。

以下では、開発者ツールキットを使用した例について説明します。SDKまたはAPIを使用したより高度なユースケースについては、その他のコンテンツをお待ちいただくか、Box Consultingの担当者にカスタム契約についてお問い合わせください。

前提条件

Enterpriseアカウント

言うまでもないかもしれませんが、念のためにお知らせしておくと、この機能を使用するには、Box Enterpriseアカウントと標準ユーザーライセンスのSalesforceアカウントが必要です。

お持ちでない場合でも、心配しないでください。BoxSalesforceの無料の開発者アカウントには、それぞれのリンク先でサインアップできます。

両方のアカウントがあれば、このチュートリアルの完了に必要なすべての機能にアクセスできます。また、サインアップは、チュートリアルを追うだけで、本番環境を変更しない場合にも実行できます。複数のBoxインスタンスで同じメールアドレスを使用することはできないので、必ず異なるメールアドレスを使用してください。サインアッププロセスは一目瞭然のため、ここでは説明しません。ヒント: ここまでの内容が初めての方には、開発者アカウントのオプションを使用することをお勧めします。

ユーザーの設定

Enterpriseアカウントを設定したら、BoxとSalesforceに以下のユーザーアカウントが存在することを確認します。

  • Salesforce管理者アカウント — 上記の開発者アカウントのサインアッププロセスを完了すると、その過程でこのログインが作成されます。サインアップしていない場合は、Salesforce管理者のログイン資格情報が必要です。
  • Salesforceユーザーアカウント — これは、Salesforce管理者を含む、Salesforceインスタンスの任意のユーザーになります。チュートリアルの後半で、Boxウィジェットへのログインに使用するBoxユーザーに関連付けられます。
  • Boxサービスアカウント — Boxに管理対象ユーザーを作成して、Salesforce統合から作成されたすべてのコンテンツを所有し、すべてのAPI呼び出しを行うことをお勧めします。Boxプライマリ管理者アカウントも使用できますが、それはお勧めしません
  • Boxユーザーアカウント — このアカウントは、上記のBoxサービスアカウントとは別にする必要があります。このチュートリアルでは、Box管理者アカウントをユーザーアカウントとして使用します。これは、Boxウィジェットへのログイン時にSalesforceユーザーアカウントに関連付けられるBoxアカウントです。

Visual Studio Codeのインストール

作成したコードを後で展開するために、拡張機能を使用します。そのためには、Visual Studio Codeをインストールしておく必要があります。インストーラと手順はこちらにあります。

インストールが完了したら、プログラムを開き、Salesforce Extensionsをインストールします。

Salesforce Extensionsのインストール

Box for Salesforceのインストール

  1. Box for Salesforce AppExchangeページで緑色の [Get It Now (今すぐ入手)] ボタンをクリックします。まだログインしていない場合は、Trailblaze.meアカウントでログインするよう求められます。このアカウントをまだ所有していない場合は、Salesforce管理者アカウントの資格情報を使用してサインアップのフローを完了してください。
Box for Salesforce AppExchangeページ

2. このデモでは、[Install in Production (本番環境にインストール)] を選択しますが、開発者アカウントオプションを使用しない場合は [Install in Sandbox (サンドボックスにインストール)] を選択できます。

インストール場所の選択

3. 利用規約に同意し、[Confirm and Install (確認してインストール)] をクリックします。

インストールの確認

4. まだログインしていない場合は、Salesforceにリダイレクトされるので、Salesforce管理者アカウントの資格情報を使用してログインします。

5. 次の画面が表示されたら、[Install for Admins Only (管理者のみにインストール)] が選択されていることを確認し、[Install (インストール)] をクリックします。

注: Boxアプリケーションへのアクセス権限を他のSalesforceユーザーに付与するには、権限セットを適用する必要があります。この処理については、こちらを参照してください。この処理はこのチュートリアルに必要ないため、このブログ記事では説明しません。

管理者向けのインストール画面

6. チェックボックスをオンにして、[Continue (続行)] をクリックします。これにより、SalesforceはバックエンドでBoxと通信できます。

[Approve Third-Party Access (サードパーティアクセスの承認)] 画面

7. インストーラが実行されます。完了するまで数分かかります。

インストール中の画面

次のメッセージが表示される場合があります。その場合は、[Done (完了)] をクリックし、インストールが完了したことを知らせるメールを待ちます。

インストールに時間がかかっている場合の画面

8. インストールが完了すると、設定の [Installed Packages (インストール済みパッケージ)] セクションにこのパッケージが表示されます。

インストールの完了

これで、インストールは完了です。設定に進みましょう。

テムズ川、ビッグベン、ウェストミンスター寺院

Box for Salesforceの構成

  1. アプリランチャーで [View All (すべて表示)] をクリックします。
アプリランチャー

2. [Box] をクリックします。

Boxの選択

3. [Box Settings (Box設定)] タブをクリックします。

[Box Settings (Box設定)] 画面

4. [Authentication (認証)] を選択し、[Connect (接続)] をクリックします。別のタブでまだBoxにログインしていないことを確認します。前の手順で設定したBoxサービスアカウントを使用する必要があります。

[Authentication (認証)] 画面

5. サービスアカウントの資格情報を使用して、Boxサービスにログインします。次に [Boxへのアクセスを許可] をクリックします。成功すると、[Authentication (認証)] 画面に再度リダイレクトされます。

[Boxへのアクセスの許可]

6. [Box Settings (Box設定)] の [Content Settings (コンテンツ設定)] セクションで、会社のSalesforceコンテンツをすべて保存するフォルダ名を入力し、[Save (保存)] をクリックします。これで、BoxではBoxサービスアカウントのルートフォルダにフォルダが作成されます。

[Content Settings (コンテンツ設定)] 画面
Salesforceコンテンツのフォルダ

[Content Settings (コンテンツ設定)] 画面では、Box Enterpriseのサブドメインがある場合は、それも設定する必要があります。サブドメインは、Box管理コンソール > [Enterprise設定] > [カスタム設定] > [会社概要] に移動すると確認できます。

Boxのカスタムドメイン

サブドメインをコピーして、[Content Settings (コンテンツ設定)] のサブドメインフィールドのテキストボックスに貼り付けます。[Save (保存)] をクリックします。

Boxの設定へのサブドメインの追加

7. [Box Settings (Box設定)] の [Box User Settings (Boxユーザーの設定)] セクションで、[Connect Account (アカウントを接続)] をクリックします。次に、前に説明したBoxユーザーアカウントを使用してBoxにログインします。また、ユーザーエクスペリエンスを向上させるために、自動コラボレーションとシームレスログインも有効にします。

この時点で統合は十分設定されているため、カスタムエクスペリエンスのコーディングに進むことができます。ただし、その他にも、組織に対して選択できる管理設定やオプションは多数あります。ここでは、その他の管理設定やオプションについて詳しく説明しませんが、管理者向けガイドでご確認いただけます。それでは、コーディングを始めましょう。

アイ川

Box for Salesforce開発者ツールキット

管理型パッケージでは、追加設定なしで、以下のようにコンテンツが整理され、オブジェクトごとに独自のフォルダが作成されています。

デフォルトのコンテンツ階層

しかし、見込み客向けのすべてのコンテンツを1つのフォルダに配置したい場合はどうなるでしょうか。ここでは、その方法を説明します。

カスタムのコンテンツ階層

[Accounts (取引先)] ページにBoxコンポーネントを埋め込む

  1. ユーザーがSalesforce内でBoxを使用できるようにするには、[Accounts (取引先)] ページにBoxコンポーネントを追加する必要があります。Salesforce管理者アカウントでログインしていることを確認し、[Accounts (取引先)] ページに移動します。右上の歯車をクリックした後、[Edit Page (ページの編集)] をクリックします。
[Accounts (取引先)] 画面

2. この例では、中央に [Box] タブを追加します。ボックスをクリックし、[Add Tab (タブを追加)] をクリックします。

タブの追加

3. [Tab Label (タブのラベル)] ドロップダウンで [Custom (カスタム)] を選択し、[Custom Label (カスタムラベル)] テキストボックスにBoxと入力します。

Boxラベルの追加

4. 左のコンポーネント選択セクションで、下にスクロールして [Box] を見つけます。中央のセクションにある [Box] タブをクリックし、コンポーネントを [Add Component(s) Here (ここにコンポーネントを追加)] と表示されている場所にドラッグします。

Boxコンポーネントの挿入

5. 右上の [Save (保存)] をクリックします。

変更の保存

6. [Activate (アクティブ化)] をクリックします。これで、[Accounts (取引先)] ページを表示するすべてのユーザーに [Box] タブが表示されます。[Activate (アクティブ化)] をクリックすると、これを組織全体のデフォルトにするかどうかを尋ねるポップアップが表示されます。

**商談ページに対して手順1~6を繰り返します**

変更のアクティブ化

7. ユーザーが、Boxフォルダがまだ作成されていないレコードにアクセスすると、以下のメッセージが表示されます。[Create Folder (フォルダを作成)] をクリックすると、この取引先用のBoxフォルダが作成されます。

フォルダの作成画面
Boxに作成されたフォルダ

フォルダがすでに作成されている場合、ユーザーには以下の画面が表示されます。

注意: SalesforceユーザーがSalesforceでこの取引先にアクセスできる場合、その取引先に関連付けられたBoxユーザーもBoxウェブアプリからそのフォルダにアクセスできます。

Salesforceに作成されたフォルダ

カスタムフォルダ階層を作成する

標準の管理型パッケージは、Salesforceの標準オブジェクトとカスタムオブジェクトの両方で上記のように設定できますが、前に示したように、APEXコードをほんの少し使用すればフォルダ構造を簡単にカスタマイズできます。

この例では、取引先 (account) フォルダの下に商談 (opportunity) フォルダを作成する方法を紹介しますが、このデモは、カスタムオブジェクトか標準オブジェクトかに関係なく、さまざまなオブジェクトにも適用できます。

カスタムのコンテンツ階層

Boxはバックグラウンドで、FRUPテーブルと呼ばれる機能を使用して、統合を管理します。こちらの手順に示されているように、レポートを実行すると、FRUPテーブルの内容を確認できます。

この例では、レコードがFRUPテーブルに挿入された後に (この場合は商談フォルダが作成されたときに) APEXクラスを実行するAPEXトリガーを作成します。このクラスが実行されると、作成された商談フォルダは、商談が関連付けられている取引先フォルダの下に移動されます。

前提条件で説明したように、Visual Studio Code Salesforce Extensionsを使用して、APEXコードを記述して展開します。

  1. この手順では、Salesforce CLIを使用します。そのため、最初にSalesforce CLIをインストールします。使用しているOSに対応するインストーラは、こちらで確認してください。
Salesforce CLI

2. ターミナルまたはコマンドプロンプトでsfdx --versionを実行して、インストールが完了していることを確認します。Salesforce CLIのバージョンが返されます。

Salesforce CLIのバージョン

3. 展開するコードスニペットを入手するために、BoxのSalesforceの例に関するGitHubページにアクセスします。リポジトリを複製するか、zipをダウンロードすることができます。その後、Visual Studio Codeで、box-salesforce-demo-101フォルダを開きます。これは、ルートの1つ下のフォルダです。

box-salesforce-demo-101フォルダを開く

4. コマンドパレットを開き ([view (表示)] > [command palette (コマンドパレット)] を選択するかキーボードショートカットを使用する)、SFDX: Authorize an orgと入力します。Enterキーを押します。

コマンドパレットを開く

5. プロジェクトのデフォルト値をそのまま使用し、Enterキーを押します。

プロジェクトの選択

6. 組織のエイリアスがあれば入力します。この例ではエイリアスはないため、空白のままにします。Enterキーを押します。

組織の選択

7. Salesforce管理者アカウントを使用してSalesforceにログインします。

Salesforceのログイン画面

8. [Allow (許可)] をクリックしてアクセスを許可します。

[Allow (許可)] をクリック

9. 成功すると、Visual Studio Codeで以下のポップアップが表示されます。

承認成功

10. このチュートリアルでは、コードの変更は必要ありませんが、展開されるコードを確認したい場合は、以下をご覧ください。

RecordFolderHandlerクラス
FrupTriggerトリガー

11. コードを展開するために、Visual Studio Codeでターミナルを開きます ([Terminal (ターミナル] )> [new terminal (新しいターミナル)] を選択するかキーボードショートカットを使用します)。sfdx force:source:deploy -m ApexClass,ApexTriggerと入力し、Enterキーを押します。

deployコマンドの実行

成功すると、以下のポップアップメッセージが表示されます。

SFDXの展開成功

このようにして、商談レコードにフォルダを作成すると、そのフォルダは、その商談の取引先の下に移動されます。

Salesforceでは、Boxコンポーネントが自動更新されるまで数秒かかることがあります。結果をすぐに確認したい場合は、手動でページを更新してください。

取引先フォルダの下の商談フォルダ

ついに、ここまでたどり着きました。Box for Salesforce開発の入門ガイドのこの概要が、皆さんのお役に立てば幸いです。これは、この統合を使用してできることという点では氷山の一角にすぎません。

パート2では、2つのサンプルスニペットの編集について説明するほか、別の一般的なユースケースとしてユーザーが [Create Folder (フォルダを作成)] ボタンをクリックする必要性をなくす方法について説明します。

コーディングを楽しみましょう。

テキサス州オースティンを流れるコロラド川

その他のリソース

Box for Salesforce開発者ツールキットのメソッドの一覧

管理者向け設定ガイド

Box Signの統合ガイド

APEXコードサンプル

FAQ

いつものように、質問がある場合は、Boxの開発者向けフォーラムに英語で投稿してください。

ナイアガラの滝

--

--