このガイドでは、クライアント ライブラリを使用せずに REST エンドポイントを直接呼び出す例を示します。
より詳細なコード例については、REST コード例の GitHub リポジトリをご覧ください。
各 API メソッドのリクエスト本文とレスポンス本文を表示するには、特定のサービス エンドポイントのリファレンス ドキュメントをご覧ください。
たとえば、GoogleAdsService.Search のリファレンス ページには、Search メソッドのリクエスト本文とレスポンス本文が表示されます。
前提条件
ここに示されているサンプルはすべて、curl コマンドを使用して bash シェルにコピーして貼り付けることを想定しています。
また、Google Cloud プロジェクト(テスト アカウント アクセスでも可)と、少なくとも 1 つのクライアント アカウントを含む Google 広告 MCC アカウントも必要です。
環境変数
次のようにアカウントの認証情報と ID を入力し、ターミナルにコピーして貼り付け、以降の例で使用する環境変数を構成します。認可ガイドでは、OAuth 2.0 アクセス トークンを生成する手順について説明しています。
API_VERSION="26"
OAUTH2_ACCESS_TOKEN="OAUTH_ACCESS_TOKEN"
MANAGER_CUSTOMER_ID="MANAGER_CUSTOMER_ID"
CUSTOMER_ID="CUSTOMER_ID"追加のオプションのオブジェクト ID
以下の例の一部は、既存の予算またはキャンペーンで機能します。これらの例で使用する既存のオブジェクトの ID がある場合は、次のように入力します。
BUDGET_ID=BUDGET_ID
CAMPAIGN_ID=CAMPAIGN_IDそれ以外の場合、2 つの Mutates - Creates examples で新しい予算とキャンペーンが作成されます。
検索
クックブック ガイドには、デフォルトの Google 広告画面の一部に対応し、このガイドで使用されているのと同じ環境変数で動作するレポートのサンプルが多数含まれています。インタラクティブなクエリビルダー ツールも、カスタムクエリをインタラクティブに作成するための優れたリソースです。
ページ分けあり
search メソッドは、10,000 個のアイテムの固定ページサイズと、query とともに指定された page_token を使用して、ページネーションを使用します。
curl
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/googleAds:search" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data '{ "query": " SELECT campaign.name, campaign_budget.amount_micros, campaign.status, campaign.optimization_score, campaign.advertising_channel_type, metrics.clicks, metrics.impressions, metrics.ctr, metrics.average_cpc, metrics.cost_micros, campaign.bidding_strategy_type FROM campaign WHERE segments.date DURING LAST_7_DAYS AND campaign.status != 'REMOVED' ", "page_token":"${PAGE_TOKEN}" }'
GAQL
SELECT campaign.name, campaign_budget.amount_micros, campaign.status, campaign.optimization_score, campaign.advertising_channel_type, metrics.clicks, metrics.impressions, metrics.ctr, metrics.average_cpc, metrics.cost_micros, campaign.bidding_strategy_type FROM campaign WHERE segments.date DURING LAST_7_DAYS AND campaign.status != 'REMOVED'
ストリーミング
searchStream メソッドは、すべての結果を 1 つのレスポンスでストリーミングするため、pageSize フィールドはサポートされていません。
curl
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/googleAds:searchStream" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data '{ "query": " SELECT campaign.name, campaign_budget.amount_micros, campaign.status, campaign.optimization_score, campaign.advertising_channel_type, metrics.clicks, metrics.impressions, metrics.ctr, metrics.average_cpc, metrics.cost_micros, campaign.bidding_strategy_type FROM campaign WHERE segments.date DURING LAST_7_DAYS AND campaign.status != 'REMOVED' " }'
GAQL
SELECT campaign.name, campaign_budget.amount_micros, campaign.status, campaign.optimization_score, campaign.advertising_channel_type, metrics.clicks, metrics.impressions, metrics.ctr, metrics.average_cpc, metrics.cost_micros, campaign.bidding_strategy_type FROM campaign WHERE segments.date DURING LAST_7_DAYS AND campaign.status != 'REMOVED'
変更
operations 配列に値を入力することで、1 つの JSON リクエスト本文で複数の mutate オペレーション(create、update、remove)を送信できます。
作成
この例では、1 つのリクエストで 2 つの共有キャンペーンの予算を作成します。
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/campaignBudgets:mutate" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'operations': [ { 'create': { 'name': 'My Campaign Budget #${RANDOM}', 'amountMicros': 500000, } }, { 'create': { 'name': 'My Campaign Budget #${RANDOM}', 'amountMicros': 500000, } } ] }"
次の例では、既存のキャンペーンの予算の BUDGET_ID を使用します。前の手順の出力からコピーして貼り付けることができます。
BUDGET_ID=BUDGET_ID他のリソースを参照するリソースは、リソース名で参照します。次の例で作成されたキャンペーンは、文字列値のリソース名で campaignBudget を参照しています。
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/campaigns:mutate" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'operations': [ { 'create': { 'status': 'PAUSED', 'advertisingChannelType': 'SEARCH', 'geoTargetTypeSetting': { 'positiveGeoTargetType': 'PRESENCE_OR_INTEREST', 'negativeGeoTargetType': 'PRESENCE_OR_INTEREST' }, 'name': 'My Search campaign #${RANDOM}', 'campaignBudget': 'customers/${CUSTOMER_ID}/campaignBudgets/${BUDGET_ID}', 'targetSpend': {} } } ] }"
アップデート
update オペレーションを使用して、既存のオブジェクトの属性を更新します。次の例では、既存のキャンペーンを使用します。前の手順の出力からコピーして貼り付けることができます。
CAMPAIGN_ID=CAMPAIGN_IDすべての更新には updateMask フィールドが必要です。これは、リクエストに含める JSON 属性のカンマ区切りのリストで、更新として適用する必要があります。updateMask にリストされているが、リクエスト本文に存在しない属性は、オブジェクトでクリアされます。updateMask に記載されていない属性は、リクエスト本文に存在していても無視されます。
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/campaigns:mutate" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'operations': [ { 'update': { 'resourceName': 'customers/${CUSTOMER_ID}/campaigns/${CAMPAIGN_ID}', 'name': 'A changed campaign name #${RANDOM}', }, 'updateMask': 'name' } ], }"
削除
オブジェクトを削除するには、リソース名を remove オペレーションとして指定します。
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/campaigns:mutate" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'operations': [ { 'remove': 'customers/${CUSTOMER_ID}/campaigns/${CAMPAIGN_ID}' } ], }"
部分的な失敗
1 つのリクエストに複数のオペレーションが含まれている場合は、必要に応じて partialFailure を指定します。true の場合、成功したオペレーションが実行され、無効なオペレーションはエラーを返します。false の場合、リクエスト内のすべてのオペレーションが有効な場合にのみ、すべてのオペレーションが成功します。
次の例では、既存のキャンペーンを使用します。作成の例の出力からコピーして貼り付けることができます。
CAMPAIGN_ID=CAMPAIGN_ID次のリクエストには 2 つのオペレーションが含まれています。最初のオペレーションでは、指定されたキャンペーンの入札戦略の変更を試み、次のオペレーションでは、無効な ID のキャンペーンの削除を試みます。2 番目のオペレーションでエラー(キャンペーン ID が無効)が発生し、partialFailure が false に設定されているため、最初のオペレーションも失敗し、既存のキャンペーンの入札戦略は更新されません。
curl --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/campaigns:mutate" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'partialFailure': false, 'operations': [ { 'update': { 'resourceName': 'customers/${CUSTOMER_ID}/campaigns/${CAMPAIGN_ID}', 'manualCpc': { 'enhancedCpcEnabled': false } }, 'updateMask': 'manual_cpc.enhanced_cpc_enabled' }, { 'remove': 'customers/${CUSTOMER_ID}/campaigns/INVALID_CAMPAIGN_ID' } ] }"
グループ化されたオペレーション
googleAds:mutate メソッドは、複数のタイプのリソースを含むオペレーションのグループの送信をサポートしています。さまざまなタイプのオペレーションを多数送信して、グループとして実行する必要がある一連のオペレーションを連結できます。オペレーションのセットは、失敗したオペレーションがない場合に成功します。1 つのオペレーションが失敗すると、すべて失敗します。
この例では、キャンペーンの予算、キャンペーン、広告グループ、広告を 1 つのアクション セットとして作成する方法を示します。各オペレーションは、前のオペレーションに依存します。1 つが失敗すると、オペレーションのグループ全体が失敗します。
負の整数(-1、-2、-3)は、リソース名でプレースホルダとして使用され、実行時に一連のオペレーションの結果で動的に入力されます。
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/googleAds:mutate" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'mutateOperations': [ { 'campaignBudgetOperation': { 'create': { 'resourceName': 'customers/${CUSTOMER_ID}/campaignBudgets/-1', 'name': 'My Campaign Budget #${RANDOM}', 'deliveryMethod': 'STANDARD', 'amountMicros': 500000, 'explicitlyShared': false } } }, { 'campaignOperation': { 'create': { 'resourceName': 'customers/${CUSTOMER_ID}/campaigns/-2', 'status': 'PAUSED', 'advertisingChannelType': 'SEARCH', 'geoTargetTypeSetting': { 'positiveGeoTargetType': 'PRESENCE_OR_INTEREST', 'negativeGeoTargetType': 'PRESENCE_OR_INTEREST' }, 'name': 'My Search campaign #${RANDOM}', 'campaignBudget': 'customers/${CUSTOMER_ID}/campaignBudgets/-1', 'targetSpend': {} } } }, { 'adGroupOperation': { 'create': { 'resourceName': 'customers/${CUSTOMER_ID}/adGroups/-3', 'campaign': 'customers/${CUSTOMER_ID}/campaigns/-2', 'name': 'My ad group #${RANDOM}', 'status': 'PAUSED', 'type': 'SEARCH_STANDARD' } } }, { 'adGroupAdOperation': { 'create': { 'adGroup': 'customers/${CUSTOMER_ID}/adGroups/-3', 'status': 'PAUSED', 'ad': { 'responsiveSearchAd': { 'headlines': [ { 'pinned_field': 'HEADLINE_1', 'text': 'An example headline' }, { 'text': 'Another example headline' }, { 'text': 'Yet another headline' } ], 'descriptions': [ { 'text': 'An example description' }, { 'text': 'Another example description' } ], 'path1': 'all-inclusive', 'path2': 'deals' }, 'finalUrls': ['https://www.example.com'] } } } } ] }"
アカウント管理
アカウントの作成、アクセス可能なアカウントの一覧表示、バイナリ アセットのアップロードを行うことができます。
アカウントを作成する
createCustomerClient メソッドを使用して新しいアカウントを作成します。URL には、クライアント アカウント ID ではなく、マネージャー アカウント ID が必要です。マネージャー アカウントの下に新しいクライアント アカウントが作成されます。
curl f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${MANAGER_CUSTOMER_ID}:createCustomerClient" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'customerClient': { 'descriptiveName': 'My Client #${RANDOM}', 'currencyCode': 'USD', 'timeZone': 'America/New_York' } }"
アクセス可能なアカウントの一覧表示
listAccessibleCustomers メソッドに対するシンプルな GET リクエストを使用して、指定された OAuth 2.0 アクセス トークンでアクセス可能な Google 広告アカウントのリストを取得します。このリクエストでは、MCC アカウント ID またはクライアント アカウント ID を使用しないでください。
curl -f --request GET "https://googleads.googleapis.com/v${API_VERSION}/customers:listAccessibleCustomers" \ --header "Content-Type: application/json" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \
バイナリ アセットをアップロードする
assets:mutate メソッドは、アセットのアップロードと管理に使用されます。画像などのバイナリデータは、パディング付きの標準の Base64 エンコードを使用して文字列としてエンコードされます。標準または URL セーフの Base64 エンコード(パディングありまたはなし)が受け入れられます。
この例では、サンプルを簡潔にするために 1 ピクセルの GIF をエンコードしています。実際には、data ペイロードははるかに大きくなります。
base64 コマンドライン ユーティリティ(GNU コア ユーティリティの一部)を使用して、1 ピクセルの GIF 画像をエンコードします。
base64 1pixel.gif
base64 でエンコードされた値は、API リクエストの data 属性として指定されます。
curl -f --request POST "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/assets:mutate" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data "{ 'operations': [ { 'create': { 'name': 'My image asset #${RANDOM}', 'type': 'IMAGE', 'imageAsset': { 'data': 'R0lGODlhAQABAAAAACH5BAEAAAAALAAAAAABAAEAAAIA' } } } ] }"