バッチジョブでリスティング グループ フィルタを使用する

AdGroupCriterion.listing_group または AssetGroupListingGroupFilter のコンテキストでリスティング グループ フィルタを使用する場合は、統合を設計する際に 次の点を考慮してください。

バッチ分割

バッチジョブに広告グループ条件またはアセットグループ リスティング グループ フィルタを含むオペレーションがある場合、Google 広告 API サーバーで受信したときに、バッチジョブのオペレーションは複数のサブバッチに分割されます。 バッチジョブの標準オペレーションとは異なり、リスティング グループ フィルタ オペレーションを含む各サブバッチはアトミックに処理されます。

リスティング グループ フィルタを含むバッチジョブがサブバッチに分割される方法は、次の要因によって決まります。

  1. リスティング グループ フィルタのタイプ
  2. リスティング グループ フィルタのターゲットである AdGroup または AssetGroup
  3. オペレーションの順序

オペレーションがどのようにグループ化されるかを検討します。

  • 同じ AssetGroupをターゲットとする連続する AssetGroupListingGroupFilterOperationオペレーション (create, update, remove)は、アトミック サブバッチにグループ化されます( 部分的な失敗の動作はありません)。
  • 同じ AdGroup をターゲットとする LISTING_GROUP 条件 (AdGroupCriterion.listing_group) の連続する AdGroupCriterionOperation オペレーション(create、update、remove)は、アトミック サブバッチにグループ化されます(部分的な失敗の動作はありません)。
  • その他の連続するオペレーションは、アトミックでないサブバッチにグループ化されます(部分的な失敗の動作)。

次の図に、このコンセプトを示します。灰色のボックスはそれぞれ、Google 広告 API を使用して送信されたバッチジョブを表しています。灰色のボックス内では、個々のオペレーションが色でグループ化され、Google 広告 API サーバーが作成するサブバッチを表しています。灰色のボックス内のオペレーションの順序は、オペレーションがバッチジョブに追加された順序に対応しています。

バッチ オペレーションがサブバッチにグループ化されていることを示す図

制限事項

バッチジョブのコンテキストでリスティング グループ フィルタを使用する場合は、次の制限が適用されます。

  • 同じ AdGroup をターゲットとする LISTING_GROUP 条件 (AdGroupCriterion.listing_group) の連続する AdGroupCriterionOperation オペレーション (create, update, および remove) の単一のアトミック サブバッチの長さは、20,000 オペレーションを超えることはできません。ただし、10,000 オペレーションを超えないようにすることをおすすめします。各 AddBatchJobOperationsRequest は 10,000 オペレーションに制限されているため、10,001 ~ 20,000 オペレーションの AdGroup サブバッチは、少なくとも 2 つの連続する AddBatchJobOperations リクエストにアップロードする必要があります。
  • 同じ AssetGroupをターゲットとする連続する AssetGroupListingGroupFilterOperationオペレーション (create, update, および remove) の単一のアトミック サブバッチは、10,000 オペレーションを超えることはできません。
  • これらのオペレーション数の上限のいずれかに違反した場合(または、単一のサブバッチに対するサーバーの 内部シリアル化バイトサイズの上限を超えた場合)、そのサブバッチでバッチ ジョブが中止されます。すでに完了しているサブバッチは コミットされたままですが、問題のあるサブバッチとそれ以降の サブバッチのすべてのオペレーションは InternalError.INTERNAL_ERRORで失敗します。

トラブルシューティング

バッチジョブのリスティング グループ フィルタ オペレーションは 1 つのトランザクションとして処理されるため、少数のエラーのあるオペレーションが原因で多くのオペレーションが失敗する可能性があります。また、BatchJob オペレーションの処理方法により、失敗の根本原因が ダウンストリームの失敗の前または後のインデックスに表示されることがあります。

たとえば、 ListBatchJobResults からのレスポンスを処理する場合:

これらのエラーは、同じアトミック サブバッチ内の別のオペレーションが失敗したため、そのインデックスのオペレーションがロールバックされたことを示します。問題の根本原因を特定するには、同じAdGroup または AssetGroup ID を共有するオペレーションについて、トランザクション エラーの operation_indexの前後の各 BatchJobResult の status メッセージを反復処理します。