AdGroupCriterion.listing_group または
AssetGroupListingGroupFilter
のコンテキストでリスティング グループ フィルタを使用する場合は、統合を設計する際に
次の点を考慮してください。
バッチ分割
バッチジョブに広告グループ条件またはアセットグループ リスティング グループ フィルタを含むオペレーションがある場合、Google 広告 API サーバーで受信したときに、バッチジョブのオペレーションは複数のサブバッチに分割されます。 バッチジョブの標準オペレーションとは異なり、リスティング グループ フィルタ オペレーションを含む各サブバッチはアトミックに処理されます。
リスティング グループ フィルタを含むバッチジョブがサブバッチに分割される方法は、次の要因によって決まります。
- リスティング グループ フィルタのタイプ
- リスティング グループ
フィルタのターゲットである
AdGroupまたはAssetGroup - オペレーションの順序
オペレーションがどのようにグループ化されるかを検討します。
- 同じ
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 からのレスポンスを処理する場合:
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 または AssetGroup
ID を共有するオペレーションについて、トランザクション エラーの
operation_indexの前後の各 BatchJobResult の status
メッセージを反復処理します。