API 構造ガイドで説明したように、Google Ads API の各最上位リソースには、リソースのインスタンスの変更をサポートする、対応するリソースタイプ固有のサービスがあります。GoogleAdsService.Mutate を使用して、1 つのリクエストで複数のリソースタイプをアトミックにミューテーションすることもできます。
このガイドでは、CampaignService を使用して Campaign オブジェクトの変更を説明しますが、同じコンセプトが他のすべてのリソースタイプ固有のサービスに適用されます。
変更リクエスト
リソースタイプ固有の各サービスには、変更リクエストを受け入れる 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 を使用したレポート ストリーミングをご覧ください。