# Salesforceコネクタ

Salesforceコネクタは、[Salesforce SOQL REST API](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_query.htm)を使用して、Salesforceからユーザーデータをインポートします。 これにより、Nexthink Adoptに関連するユーザー属性を取り込むことができ、ターゲティングとパーソナライゼーションが向上します。 Salesforceコネクタを使用して、Nexthinkインターフェースのカスタムフィールドを充実させます。

コネクタは、OAuthおよびベーシック認証の認証方法をサポートします。

## 前提条件

Salesforceコネクタを設定する前に、以下を確認してください：

* Salesforceで接続されたアプリケーションを設定するために必要な管理者権限を持っていること。 より詳細な情報については、公式な[Salesforce](https://help.salesforce.com/s/articleView?id=xcloud.remoteaccess_authenticate.htm\&type=5)ドキュメントを参照してください。
* 関連する認証方法を使用してコネクタの資格情報を設定します。 詳細な情報については、[Nexthinkコネクタ資格情報](https://docs.nexthink.com/platform/latest/administration/connector-credentials)ドキュメントを参照してください。

## Salesforceアプリケーションの設定

{% hint style="warning" %}
Salesforceコネクタを設定するには管理者権限が必要です。必要な管理者権限を持っていることを確認してください。
{% endhint %}

コネクタでOAuth 2.0認証を使用するには、SalesforceでConnected Appを作成する必要があります：

{% hint style="info" %}
Stepと必要な設定は、お使いのSalesforce設定に基づいて変わる場合があります。 詳細な情報については、[Salesforce認証](https://help.salesforce.com/s/articleView?id=xcloud.remoteaccess_authenticate.htm\&type=5)ドキュメントを参照してください。
{% endhint %}

1. 設定に移動 > **プラットフォームツール** > **アプリ > 外部アプリ。**
2. **外部アプリマネージャ**をクリック > **新しい外部アプリ。**
3. **基本情報**の下で必要なフィールドを追加してアプリケーションを作成します：
   * **接続されたアプリケーション名**： 例：`Nexthink Adopt Integration`
   * **API名**：自動生成されます
   * **連絡先メール**： 有効なメールアドレス
   * **配布状態**：**ローカル**を選択
4. **作成**をクリック
5. OAuth認証を使用する場合は、**設定**タブに移動し、**編集**をクリックしてOAuth設定を有効にします。
6. **OAuth設定**の下で、**OAuth設定の有効化**のチェックボックスを選択します。
7. **アプリ設定**の下で必要なフィールドを追加します：
   1. **コールバックURL**： `http://localhost`（プレースホルダ）を使用
   2. **OAuthスコープ**：関連するOAuthスコープを選択
8. **フロー対応**の下で、**クライアント資格情報フロー**のチェックボックスを選択します。
9. **セキュリティ**の下で、次を選択します：
   * **Webサーバーフロー用のシークレットが必要**チェックボックス
   * **リフレッシュトークンフロー用のシークレットが必要**チェックボックス
10. **保存**をクリック
11. **OAuth設定**に移動し、**Consumer Key and Secret**をクリックして認証情報を取得

* Salesforceのプロンプトに従って、自分の身元を確認してください
* **Consumer Key**と**Consumer Secret key**をコピーするには、コピーをクリックします。

{% hint style="warning" %}
認証情報キーを安全に保管して、無許可のアクセスを防ぐようにしてください。
{% endhint %}

## コネクタ資格情報の設定

NexthinkとSalesforce間の統合のために、新しい資格情報を作成するためにSalesforce資格情報を使用します。 詳細については、[コネクタ資格情報](/platform/ja/configuring_nexthink/bringing-data-into-your-nexthink-instance/integrating-nexthink-with-third-party-tools/outbound-connectors/connector-credentials.md#connectorcredentials-creatinganewcredential)を参照してください。

## Salesforceコネクタの設定

Nexthink Webインターフェイスから：

1. **管理** > **インバウンドコネクタ**に移動します。
2. ページの右上隅にある**新しいコネクタ**ボタンをクリックします。
3. **Salesforce: ユーザー属性**を選択します。

<figure><img src="/files/Ul84eaACDADRywjsvUsy" alt=""><figcaption></figcaption></figure>

**一般**タブには以下が含まれます：

* **名前**：コネクタの意味のある名前。 この名前は管理ページに表示されます。
* **NQL ID**： SalesforceコネクタをNQLクエリで参照する際に使用されるコネクタの一意の識別子。 提案されたNQL IDは、初めてワークフローを保存するまでは変更できますが、一度保存するとNQL IDは変更できません。
* **説明**：コネクタの目的と動作の短い説明。
* **スケジューリング**：
  * **繰り返し**：実行時間と繰り返しを設定。 実行はスケジュールされた時間に開始されます。
* **接続:**
  * **資格情報**： コネクタ資格情報ページから事前設定された資格情報を選択。 コネクタはベーシックおよびOAuth認証をサポートします。 詳細については、[コネクタ資格情報](https://docs.nexthink.com/platform/ja/integrations/outbound-connectors/connector-credentials) ドキュメントを参照してください。
  * **URL**：資格情報を選択すると自動的に入力されます。

<figure><img src="/files/lZuunjexgfT3ZoTFIyvW" alt=""><figcaption></figcaption></figure>

**パラメータ**タブには以下が含まれます：

* **クエリ**： Salesforce Object Query Language（SOQL）クエリをSalesforce APIによって実行する。 そのクエリには、以下を含む**ユーザーオブジェクト**のリストを返します：
  * インポートするフィールド（例：名前、メール、部署）
  * ユーザーを特定し、Nexthink識別子にマップするためのフィールドを使用（例えば、電子メールアドレスまたはUPN形式のユーザー名）。

<figure><img src="/files/ujkXxyIEFzVDDY8j6zcW" alt=""><figcaption></figcaption></figure>

**データマッピング**タブには以下が含まれます：

* **識別:** ユーザーを識別するためにAPI応答から選択するフィールド。
  * **ソース識別子（JSONata）**：API応答によって返されるユーザーを識別するフィールド名を入力。 必要に応じて値を変換するために、[JSONata](https://docs.jsonata.org/overview)を使用します。 空白または[JSONata](https://docs.jsonata.org/overview)の予約文字（`.`, `+`, `-`, `*`, `/`, `{` など）を含むフィールド名はバッククォートで囲む必要があります（`` ` ``）。
  * **Nexthink識別子**： **UPN**（CollectorによるUPNコレクションが必要）または**電子メールアドレス**（Entra IDコネクタが必要）のいずれかを選択。
* **フィールドマッピング**： **マッピングの追加**をクリックして、API応答フィールドがNexthinkカスタムフィールドにどのようにマッチするかを定義します。
  * **ソース識別子（JSONata）：**\
    インポートするデータが含まれるAPI応答内のフィールド名を指定します。 マッピング前のデータを変換する必要がある場合は、[JSONata](https://docs.jsonata.org/overview)を使用します。
  * **Nexthinkフィールド：** ユーザーオブジェクトのカスタムフィールドを選択してデータをインポート。 スペースを含むフィールド名、または [JSONata](https://docs.jsonata.org/overview) に予約されている文字（例えば `.`、`+`、`-`、`*`、`/`、`{` など）は、バックティックで囲む必要があります。

## テスト結果パネル

{% hint style="info" %}
**テスト結果**パネルは、サポートされているコネクタでのみ利用可能です。 コネクタの可用性はライセンスに依存します。
{% endhint %}

右側の**テスト結果**パネルを使用して、コネクタをリアルデータで随時実行し、レスポンスとエラーを確認します。 テストパネルは設定時のデバッグと検証を迅速化し、試行錯誤が少なく、より信頼性のあるマッピングを実現します。

**テスト実行**ボタンを選択して API を呼び出し、認証情報を検証し、対象エンドポイントへの接続を確認します。

<figure><img src="/files/YbWJL1ZPpfrb96HAXTXl" alt=""><figcaption></figcaption></figure>

基本情報として、レスポンスのステータスコードや時間の他に、パネルの下部にサンプルレスポンスレコードが表示されます。

<figure><img src="/files/HNOO9UOC8up7nND9wS3Y" alt="" width="316"><figcaption></figcaption></figure>

エラーが発生した場合、システムはAPIレジポンスを表示して問題の診断を支援します。

<figure><img src="/files/aBnrPUlVkGJndts4wRmv" alt="" width="309"><figcaption></figcaption></figure>

## 既知の制限事項

* コネクタは1回の同期で300万件以上のレコードを処理できません。
* 社員が同じUPNを共有している場合、UPNベースの識別は最初の1,000件のユーザーレコードのみ処理されます。
* ユーザー主要名（UPN）のための設定はCollectorで必要です。
* 電子メールアドレスにはEntra ID（Azure AD）コネクタが必要です。

## NQLを使用して実行ログをクエリ

NQLを使用すると、以下のテーブルをクエリすることで、Saleforceコネクタインスタンスの実行に関する詳細なインサイトを取得できます：

| フィールド                              | タイプ           | 説明                                                                                                                                                     |
| ---------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `時間`                               | `datetime`    | コネクタ実行ログエントリのタイムスタンプ。                                                                                                                                  |
| `ステータス`                            | `enumeration` | <p>実行ステータス:<br>• <code>成功</code>: すべての行が受信および処理されました。<br>• <code>部分成功</code>: 行の制限により一部の行が無視されました。<br>• <code>失敗</code>: コネクタがデータを受信または処理できませんでした。</p> |
| `details.name`                     | `文字列`         | コネクタインスタンスの名前。                                                                                                                                         |
| `details.description`              | `文字列`         | <p>エラーの説明（該当する場合）。 以下のような説明を含む:<br>• <em>受信した行が多すぎる...</em><br>• <em>フィールドに対する無効な JSONata 式</em></p>                                                   |
| `details.connector`                | `文字列`         | 使用されたコネクタテンプレートの名前。                                                                                                                                    |
| `details.credentials`              | `文字列`         | インスタンスで使用された資格情報のラベル。                                                                                                                                  |
| `details.credentials_id`           | `文字列`         | 資格情報の一意の識別子。                                                                                                                                           |
| `details.nql_id`                   | `文字列`         | コネクタ インスタンスのNQL ID。                                                                                                                                    |
| `details.number_of_received_rows`  | `数値`          | ソースから受信した行の総数。                                                                                                                                         |
| `details.number_of_processed_rows` | `数値`          | コネクタによって処理された行の総数―インポートされた行と異なる場合があります。                                                                                                                |

`platform.inbound_connector_logs`クエリを実行して、すべてのインバウンドコネクタ実行に関する包括的なログ情報を取得します。

{% hint style="warning" %}
このテーブルにアクセスするには、**データモデルの可視性**で**プラットフォームログ**権限が有効になっている必要があります。
{% endhint %}

### NQLの例

<details>

<summary>過去24時間のインポート失敗を取得</summary>

{% code overflow="wrap" %}

```
過去24時間における platform.inbound_connector_logs | statusが失敗の場合 | time, details.connector, details.name, details.error_descriptionを列挙 | timeを降順で並べ替え
```

{% endcode %}

</details>

<details>

<summary>過去24時間のインポート失敗を取得</summary>

{% code overflow="wrap" %}

```
過去24時間における platform.inbound_connector_logs | statusが失敗の場合 | time, details.connector, details.name, details.error_descriptionを列挙 | timeを降順で並べ替え
```

{% endcode %}

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.nexthink.com/platform/ja/configuring_nexthink/bringing-data-into-your-nexthink-instance/integrating-nexthink-with-third-party-tools/inbound-connectors/connector-for-salesforce.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
