Google 広告クエリ言語

主な用語

リソース
Google 広告のエンティティ(campaign や ad_group など)。
セグメント
データをグループ化するために使用されるディメンション(segments.date や segments.device など)。SELECT 句に指標とともにセグメントが含まれている場合、指標はセグメントごとに分割されます。
指標
パフォーマンスの測定(metrics.impressions、metrics.clicks など)。
帰属リソース
FROM 句のメインリソースに暗黙的に結合されるリソース。メインリソースの属性とともに属性を選択できます。

リソースまたはメタデータ情報をクエリする

Google 広告クエリ言語では、Google Ads API に対して次の種類の情報をクエリできます。

  • GoogleAdsService Search または SearchStream を使用したリソースと関連する属性、セグメント、指標: GoogleAdsService クエリの結果は GoogleAdsRow インスタンスのリストで、各 GoogleAdsRow はリソースを表します。

    属性または指標がリクエストされた場合、行にはそれらのフィールドも含まれます。セグメントがリクエストされた場合、レスポンスにはセグメントとリソースのタプルごとに 1 行が追加で表示されます。

  • GoogleAdsFieldService で使用可能なフィールドとリソースに関するメタデータ: このサービスは、互換性とタイプに関する詳細情報を含む、クエリ可能なフィールドのカタログを提供します。

    GoogleAdsFieldService クエリの結果は GoogleAdsField インスタンスのリストです。各 GoogleAdsField には、リクエストされたフィールドの詳細が含まれています。

クエリ構造の詳細については、クエリ構造と Google 広告クエリ言語の文法をご覧ください。

リソース属性のクエリ

キャンペーン リソースの属性の基本的なクエリの例を次に示します。この例では、キャンペーン ID、名前、ステータスを返す方法を示しています。

SELECT
  campaign.id,
  campaign.name,
  campaign.status
FROM campaign
ORDER BY campaign.id

このクエリはキャンペーン ID で並べ替えます。結果として得られる各 GoogleAdsRow は、選択したフィールド(キャンペーンの resource_name を含む)が入力された campaign オブジェクトを表します。

キャンペーン クエリで使用できるその他のフィールドについては、Campaign リファレンス ドキュメントをご覧ください。

指標のクエリ

特定のリソースの選択した属性に加えて、関連する指標をクエリすることもできます。

SELECT
  campaign.id,
  campaign.name,
  campaign.status,
  metrics.impressions
FROM campaign
WHERE campaign.status = 'PAUSED'
  AND metrics.impressions > 1000
ORDER BY campaign.id

このクエリは、ステータスが PAUSED で、インプレッション数が 1, 000 回を超えているキャンペーンのみをフィルタし、キャンペーン ID で並べ替えます。結果として得られる各 GoogleAdsRow には、選択した指標が入力された metrics フィールドがあります。

クエリ可能な指標のリストについては、Metrics のドキュメントをご覧ください。

セグメントのクエリ

特定のリソースの選択した属性に加えて、関連するセグメントをクエリすることもできます。

SELECT
  campaign.id,
  campaign.name,
  campaign.status,
  metrics.impressions,
  segments.date
FROM campaign
WHERE campaign.status = 'PAUSED'
  AND metrics.impressions > 1000
  AND segments.date DURING LAST_30_DAYS
ORDER BY campaign.id

指標のクエリと同様に、このクエリはステータスが PAUSED で、表示回数が 1, 000 回を超えるキャンペーンのみをフィルタします。ただし、このクエリではデータが日付でセグメント化されます。これにより、各 GoogleAdsRow はキャンペーンと日付セグメントのタプルを表します。セグメント化では、選択した指標が分割され、SELECT 句の各セグメントでグループ化されます。

クエリ可能なセグメントのリストについては、Segments のドキュメントをご覧ください。

特定のリソースのクエリでは、関連する他のリソースが利用可能な場合、それらのリソースと結合できることがあります。これらの関連リソースは「帰属リソース」と呼ばれます。クエリで属性を選択すると、帰属リソースに対して暗黙的に結合できます。

SELECT
  campaign.id,
  campaign.name,
  campaign.status,
  bidding_strategy.name
FROM campaign
ORDER BY campaign.id

このクエリでは、キャンペーン属性だけでなく、選択した各キャンペーンから関連する属性も取得します。結果として得られる各 GoogleAdsRow は、選択したキャンペーン属性と選択した入札戦略属性 bidding_strategy.name が設定された campaign オブジェクトを表します。

キャンペーン クエリで使用できる属性付きリソースを確認するには、Campaign リファレンス ドキュメントをご覧ください。

ベスト プラクティス

  • 応答時間の遅延やタイムアウトを避けるため、必要なフィールドのみを選択します。
  • 開発とテストでは、LIMIT を使用して、大きな結果セットの処理を回避します。
  • WHERE 句でフィルタを適用して、データ転送とレスポンス サイズを最小限に抑えます。
  • GoogleAdsFieldService を使用して、複雑なクエリを作成する前に、フィールドの互換性とデータ型を確認します。
  • 一部のフィールド(特に大量のデータや複雑な計算を伴うフィールド)は、クエリ費用を増加させる可能性があることに注意してください。

クエリ結果に基づいて変更する

特定のリソースをクエリするときに、返された結果をオブジェクトとしてすぐに取得し、変更して、そのリソースのサービスの mutate メソッドに送り返すことができます。ワークフローの例を次に示します。

  1. インプレッション数が 1,000 を超えるすべての PAUSED キャンペーンのクエリを実行します。
  2. レスポンス内の各 GoogleAdsRow の campaign フィールドから Campaign オブジェクトを取得します。
  3. 各キャンペーンのステータスを PAUSED から ENABLED に変更します。
  4. 変更されたキャンペーンと対応する FieldMask を使用して CampaignService.MutateCampaigns を呼び出し、キャンペーンを更新します。

フィールド メタデータ

GoogleAdsFieldService に送信されるクエリは、フィールド メタデータを取得するためのものです。この情報は、クエリでフィールドを組み合わせて使用する方法を理解するために使用できます。API からデータが利用可能で、クエリの検証や作成に必要なメタデータが提供されるため、デベロッパーはプログラムでこれを行うことができます。メタデータの一般的なクエリは次のとおりです。

SELECT
  name,
  category,
  selectable,
  filterable,
  sortable,
  selectable_with,
  data_type,
  is_repeated
WHERE name = "<INSERT_RESOURCE_OR_FIELD>"

このクエリの <INSERT_RESOURCE_OR_FIELD> は、リソース(customer や campaign など)またはフィールド(campaign.id、metrics.impressions、ad_group.id など)に置き換えることができます。

クエリ可能なフィールドの一覧については、GoogleAdsField のドキュメントをご覧ください。

バージョン固有の違い

Google 広告クエリ言語の構文、句、演算子は、サポートされているすべての Google Ads API バージョン(v23、v24、v25)で同じですが、クエリ可能なリソース、セグメント、指標、レポートの動作のカタログはメジャー バージョンによって異なります。ターゲット API バージョンのエンドポイントで GoogleAdsFieldService をクエリして、そのバージョンのフィールドと互換性ルールを調べます。

  • ライフサイクル目標のリソース: v25 以降では、すべてのライフサイクル目標(新規顧客の獲得、顧客維持、リピート利用の維持)は、統合された goal リソースと campaign_goal_config リソースからクエリされます。これにより、customer_lifecycle_goal と campaign_lifecycle_goal(v24 以前では、顧客維持目標の goal と campaign_goal_config とともに、新規顧客の獲得目標に使用されていました)が置き換えられます。
  • 最終ページ URL の拡張アセットのビュー指標: v25 以降では、final_url_expansion_asset_view をクエリすると、ビューで選択可能なすべての指標が返されます。v24 以前では、レスポンスには P-MAX キャンペーンの metrics.conversions と metrics.conversions_value、検索キャンペーンの metrics.impressions のみが含まれます。
  • アプリ キャンペーンのショッピング商品レポート: v24 以降では、shopping_product リソースは、ショッピング キャンペーン、P-MAX キャンペーン、デマンド ジェネレーション キャンペーン、動画キャンペーンに加えて、アプリ キャンペーンの商品行も返します(v23 では、アプリ キャンペーンは shopping_product の結果から除外されます)。
  • バージョン固有のリソース、セグメント、指標:
    • v25 以降: リフト測定リソース(lift_measurement_config など)、セグメント(segments.ad_sub_format_type、segments.loyalty_membership など)、YouTube エンゲージメント指標(metrics.youtube_likes、metrics.youtube_comments、metrics.youtube_shares)が含まれます。local_services_lead.contact_details.email(v24 以前で選択可能)が削除されます。
    • v24 以降: cart_data_sales_view リソース、shopping_performance_view の segments.conversion_attribution_event_type、segments.mobile_device_platform、performance_max_placement_view の segments.ad_network_type を含みます。campaign_budget の campaign.video_brand_safety_suitability(customer.video_brand_safety_suitability に置き換え)、segments.ad_sub_network_type、ad_group_asset、campaign_asset、customer_asset(v23 でのみ選択可能)の segments.click_type を削除しました。
  • 粒度別日付ルックバック エラーコード: 37 か月のルックバック ウィンドウを超えて segments.date、segments.week、segments.hour でセグメント化する(または 1 か月未満の日付範囲でフィルタする)クエリは、v24 以降では DateRangeError.REQUESTED_DATE_GRANULARITY_NOT_SUPPORTED を返します(v23 では DateRangeError.UNKNOWN)。詳しくは、期間をご覧ください。

コードの例

クライアント ライブラリには、GoogleAdsService で Google Ads Query Language を使用する例が用意されています。基本的なオペレーション フォルダには、GetCampaigns、GetKeywords、SearchForGoogleAdsFields などの例があります。