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 することもできます。