AdGroupCriterion.listing_group または AssetGroupListingGroupFilter のコンテキストでリスティング グループ フィルタを操作する場合は、統合を設計する際に次の点を考慮してください。
バッチ分割
バッチジョブに広告グループの条件またはアセット グループのリスティング グループ フィルタを含むオペレーションがある場合、バッチジョブのオペレーションは、Google Ads API サーバーで受信されるときに複数のサブバッチに分割されます。バッチジョブの標準オペレーションとは異なり、リスティング グループ フィルタ オペレーションを含む各サブバッチはアトミックに処理されます。
リスティング グループ フィルタを含むバッチジョブがサブバッチに分割される方法は、次の要因によって決まります。
- リスティング グループ フィルタのタイプ
- リスティング グループ フィルタのターゲットである
AdGroupまたはAssetGroup - オペレーションの順序
オペレーションがどのようにグループ化されているかを検討します。
- 同じ
AssetGroupをターゲットとする連続するすべてのAssetGroupListingGroupFilterOperationオペレーション(create、update、remove)は、アトミックなサブバッチにグループ化されます(部分的な失敗動作はありません)。 - 同じ
AdGroupをターゲットとするLISTING_GROUP条件(AdGroupCriterion.listing_group)に対する連続するすべてのAdGroupCriterionOperationオペレーション(create、update、remove)は、アトミックなサブバッチにグループ化されます(部分的な失敗動作はありません)。 - 他のすべての連続するオペレーションは、非アトミックなサブバッチにグループ化されます(部分的な失敗の動作)。
次の図に、このコンセプトを示します。灰色のボックスは、Google Ads API を使用して送信されたバッチジョブを表しています。グレーのボックス内では、個々のオペレーションが色別にグループ化され、Google Ads 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 オペレーションを超えることはできません。 - これらのオペレーション数の上限に違反した場合(または、1 つのサブバッチのサーバーの内部シリアル化バイトサイズの上限を超えた場合)、そのサブバッチでバッチジョブが中止されます。すでに完了している以前のサブバッチは commit されたままになりますが、違反したサブバッチとそれ以降のサブバッチのすべてのオペレーションは
InternalError.INTERNAL_ERRORで失敗します。
トラブルシューティング
バッチジョブ内のリスティング グループ フィルタ オペレーションは 1 つのトランザクションとして処理されるため、少数のエラー オペレーションが原因で多くのオペレーションが失敗するシナリオが発生する可能性があります。さらに、BatchJob オペレーションの処理方法により、障害の根本原因が、ダウンストリーム障害の前後のインデックスに表示されることがあります。
たとえば、ListBatchJobResults からのレスポンスを処理する場合:
AdGroupCriterionOperationリスティング グループの場合、同じAdGroupをターゲットとする連続したオペレーションがCriterionError.LISTING_GROUP_ERROR_IN_ANOTHER_OPERATION(Product group operations are atomic within the same ad group. This operation failed because another operation targeting the same ad group ID was invalid.)で失敗することがあります。AssetGroupListingGroupFilterOperationオペレーションの場合、同じAssetGroupをターゲットとする連続したオペレーションがBatchJobError.ASSET_GROUP_LISTING_GROUP_FILTER_TRANSACTION_FAILUREで失敗することがあります。
これらのエラーは、同じアトミック サブバッチ内の別のオペレーションが失敗したため、そのインデックスのオペレーションがロールバックされたことを示します。問題の根本原因を特定するには、同じ AdGroup ID または AssetGroup ID を共有するオペレーションについて、トランザクション エラーの operation_index の前後で、各 BatchJobResult の status メッセージを反復処理します。