Google Ads API では、ユースケースに応じてリソースを変更する複数の方法が用意されています。
- リソース サービスの変更: 変更可能なリソースごとに、その特定のリソースタイプのオペレーションを実行する専用のサービスがあります。たとえば、
Campaignリソースは、キャンペーンの作成、更新、削除にCampaignService.MutateCampaignsエンドポイントを使用します。 - 一括変更:
GoogleAdsService.Mutateエンドポイントは、複数のリソースタイプにわたる一連の変更オペレーション(v23 以降では、キャンペーンの予約や見積もりなどのサポートされているアクション オペレーションも含む)を 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 を使用すると、次のメリットがあります(実装ガイダンスについては、変更のベスト プラクティスをご覧ください)。
- 異なるリソース サービスにわたるアクションのグループ化: 個々のリソース サービス呼び出しは単一のリソースタイプに対するオペレーションのみを受け入れますが、
GoogleAdsService.Mutateを使用すると、1 回の呼び出しで複数のリソースタイプを変更できます。 - 一時的なリソース名: 新しく作成された親エンティティに負の整数 ID(
customers/CUSTOMER_ID/campaigns/-1など)を割り当て、同じリクエスト内の子オペレーションでそれらの一時的な ID を参照できます。
これらの機能を使用すると、GoogleAdsService.Mutate を使用してキャンペーン階層全体をアトミックに作成し、すべてのオペレーションが同時に成功または失敗するようにしたり、partial_failure を true に設定して有効なオペレーションを個別にコミットしたりできます。