リソースを変更する

Google Ads API には、ユースケースに応じてリソースを変更する方法が複数用意されています。

  • リソース サービスの変更: 変更可能な各リソースには、その特定のリソースタイプに対してオペレーションを実行する専用のサービスがあります。たとえば、Campaign リソースは、キャンペーンの作成、更新、削除に CampaignService.MutateCampaigns エンドポイントを使用します。
  • 一括変更: GoogleAdsService.Mutate エンドポイントは、複数のリソースタイプにわたる一連の変更オペレーション(およびキャンペーンの予約や見積もりなどのサポートされているアクション オペレーション)を 1 つの同期リクエストにラップします。
  • 非同期バッチジョブ: 大規模なミューテーションや長時間実行されるワークロードの場合、BatchJobService は同期リクエストのタイムアウトのリスクなしにオペレーションを非同期で実行します。GoogleAdsService.Mutate とは異なり、BatchJobService は常に部分的な失敗のセマンティクスで実行され、validate_only モードやアクション オペレーション(book_campaigns_operation、quote_campaigns_operation)はサポートされません。部分的な失敗は常にアクティブであるため、BatchJobService は、基盤となるサービスが部分的な失敗をサポートしていないリソース オペレーション(CustomerOperation、CampaignConversionGoalOperation、ConversionGoalCampaignConfigOperation、CustomConversionGoalOperation、CustomerConversionGoalOperation など)を MutateError.OPERATION_DOES_NOT_SUPPORT_PARTIAL_FAILURE で拒否します。

一括ミューテーションのメリット

GoogleAdsService.Mutate を使用すると、次のようなメリットがあります(実装ガイダンスについては、Mutate のベスト プラクティスをご覧ください)。

  • 異なるリソース サービスにまたがるグループ化されたアクション: 個々のリソース サービス呼び出しでは、1 つのリソースタイプに対するオペレーションのみが受け入れられますが、GoogleAdsService.Mutate では、1 回の呼び出しで複数のリソースタイプを変更できます。
  • 一時的なリソース名: 新しく作成された親エンティティに負の整数 ID(customers/CUSTOMER_ID/campaigns/-1 など)を割り当て、同じリクエスト内の子オペレーションでそれらの一時 ID を参照できます。

これらの機能を使用すると、GoogleAdsService.Mutate を使用してキャンペーン階層全体をアトミックに作成し、すべてのオペレーションが同時に成功または失敗するようにできます。また、partial_failure を true に設定して、有効なオペレーションを個別に commit することもできます。