2021/06/28

Salesforce のSOQL、API選択のポイントと使用方法を紹介

 
  

Salesforce SOQL APIの概要

Salesforce のカスタム UI では、SOQL(Salesforce Object Query Language)、SOSL (Salesforce Object Search Language)のAPIを使用して、Salesforceのデータを検索できます。 機能としては、SQLの SELECT コマンドと同等です。SOQL では、以下の項目を指定できます。 ・取得元オブジェクト ・取得する項目のリスト ・取得元オブジェクトから行を選択するための条件

Salesforce SOQL APIを選択するポイント

SOQLはSELECT SQL ステートメントに相当するAPIであり、取得したいデータが、どのオブジェクトに存在するかがわかっている場合に適しています。 SOSL はプログラム的にテキストベースで検索インデックスを実行し、項目内の複数の用語をトークン化して検索インデックスを構築できます。 そのため、より多くの関連結果を、速く返せます。どのオブジェクトに存在するかはわからない、特定の用語を含むデータを取得する場合には、SOSLが適しています。

SOQL APIを使用する操作

SOQL APIは、Salesforceのどのオブジェクトに取得したいデータが存在するかがわかっていて、検索するオブジェクトを特定できる場合に適しています。 ・1 つもしくは相互に関連する複数のオブジェクトを特定してデータを取得する。 ・条件を満たすレコードの数をカウントする。 ・クエリに含まれる結果を並び替える。 ・取得するデータは、数値、日付、チェックボックス項目である。

SOQL APIを使用する環境

次の環境で、SOQL APIを使用すると、効果的なクエリのコードをシンプルに作成できます。 ・query() コールの queryString パラメータ ・Apex ステートメント ・Visualforce コントローラ、getter メソッド ・Salesforce CLI、Visual Studio Code のSalesforce 拡張機能

SalesforceのSOQL APIの使用方法

Query リソースを使用して、SOQL クエリを実行すると以下の結果を得られます。SOQLクエリを実行する場合と、SOQL クエリの残りの結果を取得する場合について説明します。 ・すべての結果を 1 つの応答で返す ・必要に応じて、結果の一部と、残りの結果を取得するために使用する識別子を返す

SOQLクエリを実行する

SOQLクエリを実行するサンプルコードです。このケースではクエリを実行する場合のリクエストボディは不要です。 対象:すべてAccount レコード 要求する値: name 項目の値

SOQLクエリを実行するサンプル

下記がサンプルになります。
curl https://yourInstance.salesforce.com/services/data/v20.0/query/?q=SELECT+name+from+Account -H "Authorization: Bearer token"

SOQLクエリを実行する場合のレスポンスボディのサンプル

下記がサンプルになります。
{
    "done" : true,
    "totalSize" : 14,
    "records" :
    [
        {
            "attributes" :
            {
                "type" : "Account",
                "url" : "/services/data/v20.0/sobjects/Account/001D000000IRFmaIAH"
            },
            "Name" : "Test 1"
        },
        {
            "attributes" :
            {
                "type" : "Account",
                "url" : "/services/data/v20.0/sobjects/Account/001D000000IomazIAB"
            },
            "Name" : "Test 2"
        },

        ...

    ]
}

SOQL クエリの残りの結果を取得する

クエリの残りの結果を取得する際は、パラメータではなく、nextRecordsUrl を使用します。 実行したクエリで結果の一部のみを返されるとき、応答の最後に nextRecordsUrl という項目が含まれます。次のバッチを要求し、すべてのレコードが取得されるまでこの操作が繰り返されます。 この場合もリクエストボディは不要です。

クエリの残りの結果を取得する場合のサンプル

下記がサンプルになります。
curl https://yourInstance.salesforce.com/services/data/v20.0/query/01gD0000002HU6KIAW-2000 -H "Authorization: Bearer token"
クエリの残りの結果を取得する場合のレスポンスボディのサンプル
{
    "done" : true,
    "totalSize" : 3214,
    "records" : [...]
}

SOQLクエリの送信

SOQLクエリの送信には、RESTと SOAP プロトコルを使用します。レコード、記事、クエリの自動候補などの検索タスクを実行するリソースも利用できます。 Apex で、SOQLを使用する際はステートメントを[ ](角括弧)で囲みます。SOSLも同じ方法で使用できます。また、Search クラスにより動的な SOSL クエリを実行し、Search 名前空間を使用すれば、検索結果と提案結果を取得できます。 <RESTと SOAP プロトコル> ・Query (REST) と query() (SOAP) 対象:指定されたオブジェクト 動作:SOQL クエリを実行し、指定された条件に一致するデータを返す。 ・Search (REST) とearch() (SOAP) 対象:組織のデータ 動作:SOSL テキスト文字列検索する。 は不要です。

Salesforce のSOQL APIの使い分けを理解しよう

Salesforce 上のデータの検索、クエリを実行するSOQL APIについて説明しました。 機能としてはSQLの SELECTに相当し、頻度の高いAPIと言えます。検索実行のパフォーマンスに影響しますので、SOSL との使い分けのポイントや使用方法を理解しておきましょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】