API 構造ガイドで説明したように、Google Ads API の最上位リソースにはそれぞれ、リソースのインスタンスの変更をサポートするリソース タイプ固有のサービスが対応しています。GoogleAdsService.Mutate を使用して、単一のリクエストで複数のリソースタイプをアトミックにミューテーションすることもできます。
このガイドでは、CampaignService を使用して Campaign オブジェクトの変更方法を示しますが、他のすべてのリソースタイプ固有のサービスにも同じコンセプトが適用されます。
mutate リクエスト
リソースタイプ固有の各サービスには、変更リクエストを受け入れる mutate メソッドがあります。このリクエストは次の要素で構成されます。
customer_id(REST URL ではcustomerId)operationsのコレクションpartial_failure、validate_only、response_content_typeなどの省略可能な実行設定(変更後に変更可能なリソースまたはリソース名のみが返されるかどうかを決定します)
たとえば、CampaignService の MutateCampaigns メソッドは、次の要素で構成される MutateCampaignsRequest を受け入れます。
- A:
customer_id CampaignOperationオブジェクトのコレクション(operations)- 省略可能な実行設定(優先するレスポンス タイプを示す
partial_failure、validate_only、response_content_type)
運用
CampaignOperation などのオペレーション オブジェクトを使用すると、operation フィールドを設定して、単一のリソースに対して実行するアクションを指定できます。このフィールドは、次の属性で構成される oneof フィールドです。
create- リソースの新しいインスタンスを作成します。
updateupdateリソースの属性と一致するようにリソースを更新します。このフィールドを設定する場合は、オペレーションのupdate_maskも設定する必要があります。これにより、更新オペレーション中に変更する属性を Google Ads API に伝えます。各クライアント ライブラリには、update_maskを生成するフィールド マスク ユーティリティまたはヘルパー メソッドが含まれています。remove- リソース名文字列(
customers/1234567890/campaigns/987654321など)で指定されたリソースを削除します。
operation フィールドは oneof フィールドであるため、1 回のオペレーションで複数のオブジェクトを変更することはできません。たとえば、1 つのキャンペーンを作成して別のキャンペーンを削除する場合は、リクエストに CampaignOperation のインスタンスを 2 つ追加します。1 つは create を設定し、もう 1 つは remove を設定します。
バッチ オペレーション
1 つのオペレーションで作成、更新、削除できるリソースは 1 つだけですが、1 つの変更リクエストに複数のオペレーションを含めることができます。各リクエストに 1 つのオペレーションが含まれる複数の変更リクエストを送信するのではなく、オペレーションを 1 つの変更リクエストに結合する必要があります。
たとえば、10 個のキャンペーンを作成する場合は、10 個の CampaignOperation オブジェクトを含む 1 つの
MutateCampaignsRequest を送信する必要があります。異なるリソースタイプにわたるオペレーションを 1 つのリクエストにグループ化するには、GoogleAdsService.Mutate またはミューテーション リソースを使用します。
mutate レスポンス
レスポンスで返される内容は、変更リクエストの response_content_type フィールドで送信された内容によって異なります。たとえば、MUTABLE_RESOURCE が指定されている場合、レスポンスには、リソースの resource_name と、campaign のキャンペーンの変更可能なフィールドの両方が含まれます。デフォルト(RESOURCE_NAME_ONLY)では、各 MutateCampaignResult に resource_name のみが入力されます。
mutate エラー
デフォルト(partial_failure = false)では、リクエスト内のすべてのオペレーションが成功した場合にのみ、変更リクエストのオペレーションが Google 広告アカウントに適用されます。オペレーションが失敗した場合は、リクエスト全体がロールバックされます。部分的な失敗をサポートする変更リクエスト(リクエスト メッセージに partial_failure フィールドがあるリクエスト)の場合、partial_failure = true を設定すると、有効なオペレーションがコミットされ、失敗したオペレーションはレスポンスの partial_failure_error フィールドでオペレーション固有のエラーを返します。エラー処理の詳細については、部分的な障害のガイドと一般的なエラーのガイドをご覧ください。
変更の追跡
Google 広告アカウントのオブジェクトに加えられた変更をトラッキングしたり、オブジェクトの現在の状態を取得したりするには、change_status リソースと change_event リソースを使用します。
change_statusは、特定の期間内に変更されたリソースの概要を示します。change_eventは、変更されたフィールドの古い値と新しい値など、変更の詳細な履歴を提供します。
これらのリソースをクエリするには、GoogleAdsService.SearchStream メソッドまたは GoogleAdsService.Search メソッドを使用します。詳しくは、GoogleAdsService を使用したレポート ストリーミングをご覧ください。