Khi bạn làm việc với bộ lọc nhóm trang thông tin trong bối cảnh của một
AdGroupCriterion.listing_group hoặc một
AssetGroupListingGroupFilter, hãy cân nhắc những điều sau đây khi thiết kế quy trình tích hợp.
Tách lô hàng
Nếu có bất kỳ thao tác nào trong một công việc hàng loạt chứa tiêu chí nhóm quảng cáo hoặc bộ lọc nhóm trang thông tin của nhóm tài sản, thì các thao tác trong công việc hàng loạt sẽ được chia thành nhiều nhóm con khi được máy chủ Google Ads API nhận. Không giống như các thao tác chuẩn trong một công việc theo lô, mỗi lô phụ chứa các thao tác lọc nhóm trang thông tin đều được coi là một đơn vị nguyên tử.
Cách chia các lô công việc có chứa bộ lọc nhóm trang thông tin thành các lô phụ được xác định bằng các yếu tố sau:
- Loại bộ lọc nhóm trang thông tin
AdGrouphoặcAssetGroupmà bộ lọc nhóm trang thông tin đang nhắm đến- Độ ưu tiên của toán tử
Hãy cân nhắc cách nhóm các thao tác:
- Tất cả các thao tác
AssetGroupListingGroupFilterOperationliên tiếp (create,updatevàremove) nhắm đến cùng mộtAssetGroupsẽ được nhóm lại với nhau trong một lô con nguyên tử (không có hành vi thất bại một phần). - Tất cả các thao tác
AdGroupCriterionOperationliên tiếp (create,updatevàremove) cho tiêu chíLISTING_GROUP(AdGroupCriterion.listing_group) nhắm đến cùng mộtAdGroupsẽ được nhóm lại với nhau trong một lô con nguyên tử (không có hành vi thất bại một phần). - Tất cả các thao tác liên tiếp khác được nhóm lại với nhau trong các lô phụ không nguyên tử (hành vi không thành công một phần).
Sơ đồ sau đây minh hoạ khái niệm này. Mỗi hộp màu xám đại diện cho một công việc theo lô được gửi bằng Google Ads API. Trong các hộp màu xám, các thao tác riêng lẻ được nhóm theo màu để thể hiện các lô phụ mà máy chủ API Google Ads tạo ra. Thứ tự của các thao tác trong mỗi hộp màu xám tương ứng với thứ tự mà các thao tác sẽ được thêm vào lệnh hàng loạt.
Các điểm hạn chế
Khi làm việc với bộ lọc nhóm trang thông tin trong bối cảnh của công việc theo lô, các giới hạn sau sẽ được áp dụng:
- Một lô phụ nguyên tử duy nhất gồm các thao tác
AdGroupCriterionOperationliên tiếp (create,updatevàremove) cho các tiêu chíLISTING_GROUP(AdGroupCriterion.listing_group) nhắm đến cùng mộtAdGroupkhông được vượt quá 20.000 thao tác. Tuy nhiên, bạn không nên vượt quá 10.000 thao tác. Vì mỗiAddBatchJobOperationsRequestbị giới hạn ở 10.000 thao tác, nên một lô phụAdGroupgồm 10.001 đến 20.000 thao tác phải được tải lên trong ít nhất hai yêu cầuAddBatchJobOperationsliên tiếp. - Một lô phụ nguyên tử duy nhất gồm các thao tác
AssetGroupListingGroupFilterOperationliên tiếp (create,updatevàremove) nhắm đến cùng mộtAssetGroupkhông được vượt quá 10.000 thao tác. - Vi phạm một trong hai giới hạn về số lượng thao tác này (hoặc vượt quá giới hạn kích thước byte được chuyển đổi tuần tự nội bộ của máy chủ cho một lô con) sẽ huỷ bỏ công việc hàng loạt tại lô con đó: mọi lô con trước đó đã hoàn tất vẫn được cam kết, trong khi tất cả các thao tác trong lô con vi phạm và mọi lô con tiếp theo đều không thành công với
InternalError.INTERNAL_ERROR.
Khắc phục sự cố
Các thao tác lọc nhóm trang thông tin trong một công việc theo lô được xử lý dưới dạng một giao dịch, điều này có thể dẫn đến trường hợp nhiều thao tác không thành công do một số ít thao tác bị lỗi. Hơn nữa, do cách xử lý các thao tác BatchJob, nguyên nhân gốc của lỗi có thể xuất hiện tại một chỉ mục trước hoặc sau lỗi hạ nguồn.
Ví dụ: khi xử lý phản hồi từ ListBatchJobResults:
- Đối với các nhóm trang thông tin
AdGroupCriterionOperation, bạn có thể thấy rằng các thao tác liên tiếp nhắm đến cùng mộtAdGroupkhông thành công và có lỗiCriterionError.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.). - Đối với các thao tác
AssetGroupListingGroupFilterOperation, bạn có thể thấy rằng các thao tác liên tiếp nhắm đến cùng mộtAssetGroupkhông thành công vớiBatchJobError.ASSET_GROUP_LISTING_GROUP_FILTER_TRANSACTION_FAILURE.
Những lỗi này cho biết thao tác tại chỉ mục đó đã được khôi phục vì một thao tác khác trong cùng một lô con nguyên tử không thành công. Để xác định nguyên nhân gốc của vấn đề, hãy lặp lại thông qua các thông báo status trong mỗi BatchJobResult (trước và sau operation_index của lỗi giao dịch) cho các thao tác có cùng mã nhận dạng AdGroup hoặc AssetGroup.