Google Ads là một trong những công cụ quảng cáo trực tuyến hàng đầu hiện nay, giúp doanh nghiệp tiếp cận khách hàng tiềm năng một cách nhanh chóng và chính xác. Tuy nhiên, việc triển khai các chiến dịch quảng cáo có thể gặp phải những lỗi vi phạm chính sách, dẫn đến quảng cáo không được phê duyệt. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về cách yêu cầu miễn trừ quảng cáo trong Google Ads, giúp khắc phục các lỗi này và đảm bảo chiến dịch của bạn hoạt động hiệu quả.
Các bước thực hiện yêu cầu miễn trừ quảng cáo như sau:
- Lưu trữ tất cả các chủ đề chính sách có thể bỏ qua từ PolicyTopicEntry
Các chủ đề chính sách này được lưu trữ trongPolicyFindingDetails
, thông tin được trả về khi nỗ lực thay đổi quảng cáo ban đầu không thành công. - Gửi yêu cầu thay đổi để tạo hoặc cập nhật quảng cáo
Khi thực hiện yêu cầu, bạn cần thêm các chủ đề chính sách đã được lưu trữ trước đó để bỏ qua chúng.
Trong hướng dẫn này, chúng ta sẽ minh họa với một quảng cáo tìm kiếm thích ứng. Tuy nhiên, quy trình yêu cầu miễn trừ áp dụng cho tất cả các loại quảng cáo và tương tự với các thao tác khác (tạo mới hoặc cập nhật).
Lưu trữ tất cả chủ đề chính sách có thể bỏ qua
Thông tin lỗi của quảng cáo sẽ được đưa vào trong PolicyFindingDetails
. Từ đây, bạn có thể lưu trữ danh sách các đối tượng PolicyTopicEntry
.
Ở bước này, cần lưu ý lưu trữ trường topic
từ mỗi PolicyTopicEntry
.
private List<String> fetchIgnorablePolicyTopics(GoogleAdsException gae) {
System.out.println("Chi tiết lỗi Google Ads:");
// Tạo danh sách để lưu trữ kết quả.List<String> ignorableTopics = new ArrayList<>();
// Duyệt qua tất cả các lỗi để tìm chủ đề chính sách có thể bỏ qua.
for (GoogleAdsError error : gae.getGoogleAdsFailure().getErrorsList()) {
// Chỉ xử lý lỗi liên quan đến policy finding.
if (error.getErrorCode().getErrorCodeCase() != ErrorCodeCase.POLICY_FINDING_ERROR) {
throw gae;
}
// Hiển thị thông tin chi tiết về lỗi.
System.out.printf(“\t%s: %s%n”, error.getErrorCode().getErrorCodeCase(), error.getMessage());
// Kiểm tra PolicyFindingDetails để tìm các chủ đề chính sách có thể bỏ qua.
if (error.getDetails() != null) {
PolicyFindingDetails policyFindingDetails = error.getDetails().getPolicyFindingDetails();
if (policyFindingDetails != null) {
System.out.println(“\tChi tiết về policy finding:”);
// Hiển thị tất cả các chủ đề chính sách cho lỗi hiện tại.
for (PolicyTopicEntry policyTopicEntry :
policyFindingDetails.getPolicyTopicEntriesList()) {
// Thêm chủ đề này vào danh sách kết quả.
ignorableTopics.add(policyTopicEntry.getTopic());
System.out.printf(“\t\tTên chủ đề chính sách: ‘%s’%n”, policyTopicEntry.getTopic());
System.out.printf(“\t\tLoại entry của chủ đề chính sách: ‘%s’%n”, policyTopicEntry.getType());
// Có thể truy xuất thêm thông tin từ:
// – policyTopicEntry.getEvidences()
// – policyTopicEntry.getConstraints()
}
}
}
}
return ignorableTopics;
}
Gửi yêu cầu thay đổi với các chủ đề chính sách có thể bỏ qua
- Tạo đối tượng PolicyValidationParameter
Đầu tiên, khởi tạo một đối tượngPolicyValidationParameter
. - Đặt các chủ đề chính sách có thể bỏ qua vào PolicyValidationParameter
Gán danh sách các chủ đề chính sách có thể bỏ qua (ignorable_policy_topics
) đã lưu trữ trước đó vào trườngignorable_policy_topics
của đối tượngPolicyValidationParameter
vừa tạo. - Gán PolicyValidationParameter cho thao tác tương ứng
- Trong trường hợp tạo mới quảng cáo, gán
PolicyValidationParameter
vào trườngpolicy_validation_parameter
của đối tượngAdGroupAdOperation
. - Trong trường hợp cập nhật quảng cáo, gán
PolicyValidationParameter
vào trườngpolicy_validation_parameter
của đối tượngAdOperation
.
- Trong trường hợp tạo mới quảng cáo, gán
- Gửi yêu cầu thay đổi
Gửi thao tác được tạo hoặc cập nhật bằng cách sử dụng:AdGroupAdService.MutateAdGroupAds
cho trường hợp tạo mới.AdService.MutateAds
cho trường hợp cập nhật.
private void requestExemption(
List<String> ignorablePolicyTopics,
AdGroupAdServiceClient client,
AdGroupAdOperation operation,
long customerID) {
System.out.println(“Đang thử thêm một quảng cáo tìm kiếm thích ứng mới bằng cách yêu cầu miễn trừ vi phạm chính sách.”);
// Chuyển đổi thao tác sang dạng builder.
AdGroupAdOperation.Builder operationBuilder = operation.toBuilder();
// Thêm yêu cầu miễn trừ.
operationBuilder
.getPolicyValidationParameterBuilder()
.addAllIgnorablePolicyTopics(ignorablePolicyTopics);
// Gửi yêu cầu đến API.
MutateAdGroupAdsResponse response =
client.mutateAdGroupAds(
String.valueOf(customerID), ImmutableList.of(operationBuilder.build()));
// Hiển thị tên tài nguyên của quảng cáo mới được thêm.
System.out.printf(
“Đã thêm thành công một quảng cáo tìm kiếm thích ứng với tên tài nguyên ‘%s’ bằng cách yêu cầu miễn trừ vi phạm chính sách.%n”,
response.getResults(0).getResourceName());
}
Ví dụ về mã
Ví dụ về mã hoàn chỉnh để xử lý các lỗi vi phạm chính sách về quảng cáo tìm kiếm thích ứng:
package com.google.ads.googleads.examples.errorhandling;
import com.google.ads.googleads.lib.GoogleAdsClient;
import com.google.ads.googleads.v17.common.AdTextAsset;
import com.google.ads.googleads.v17.common.PolicyTopicEntry;
import com.google.ads.googleads.v17.enums.AdGroupAdStatusEnum.AdGroupAdStatus;
import com.google.ads.googleads.v17.errors.GoogleAdsError;
import com.google.ads.googleads.v17.errors.GoogleAdsException;
import com.google.ads.googleads.v17.errors.PolicyFindingDetails;
import com.google.ads.googleads.v17.resources.AdGroupAd;
import com.google.ads.googleads.v17.services.AdGroupAdOperation;
import com.google.ads.googleads.v17.services.AdGroupAdServiceClient;
import com.google.ads.googleads.v17.services.MutateAdGroupAdsResponse;
import com.google.ads.googleads.v17.utils.ResourceNames;
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.List;
/**
* Ví dụ minh họa cách xử lý vi phạm chính sách khi tạo quảng cáo tìm kiếm thích ứng.
*/
public class HandleResponsiveSearchAdPolicyViolations {
public static void main(String[] args) {
// Tạo client Google Ads từ tệp cấu hình.
GoogleAdsClient googleAdsClient = GoogleAdsClient.newBuilder().fromPropertiesFile().build();
// Các tham số đầu vào.
long customerId = Long.parseLong(“INSERT_CUSTOMER_ID”);
long adGroupId = Long.parseLong(“INSERT_AD_GROUP_ID”);
try {
new HandleResponsiveSearchAdPolicyViolations()
.runExample(googleAdsClient, customerId, adGroupId);
} catch (GoogleAdsException gae) {
System.err.printf(“Yêu cầu thất bại với lỗi: %s%n”, gae.getMessage());
}
}
/**
* Thực thi ví dụ.
*/
public void runExample(GoogleAdsClient googleAdsClient, long customerId, long adGroupId) {
// Tạo đối tượng quảng cáo với trạng thái tạm dừng.
AdGroupAd.Builder adGroupAdBuilder = AdGroupAd.newBuilder()
.setAdGroup(ResourceNames.adGroup(customerId, adGroupId))
.setStatus(AdGroupAdStatus.PAUSED);
// Cấu hình nội dung quảng cáo tìm kiếm thích ứng.
adGroupAdBuilder.getAdBuilder()
.addFinalUrls(“https://www.example.com”)
.getResponsiveSearchAdBuilder()
.addAllHeadlines(
ImmutableList.of(
AdTextAsset.newBuilder().setText(“Cruise to Mars”).build(),
AdTextAsset.newBuilder().setText(“Best Space Cruise Line”).build(),
AdTextAsset.newBuilder().setText(“Experience the Stars”).build()))
.addAllDescriptions(
ImmutableList.of(
AdTextAsset.newBuilder().setText(“Buy your tickets now!!!!!!!”).build(),
AdTextAsset.newBuilder().setText(“Visit the Red Planet”).build()));
// Tạo thao tác gửi đến API.
AdGroupAdOperation operation = AdGroupAdOperation.newBuilder()
.setCreate(adGroupAdBuilder.build()).build();
try (AdGroupAdServiceClient client =
googleAdsClient.getLatestVersion().createAdGroupAdServiceClient()) {
// Gửi yêu cầu tạo quảng cáo, dự kiến sẽ gặp lỗi vi phạm chính sách.
client.mutateAdGroupAds(String.valueOf(customerId), ImmutableList.of(operation));
} catch (GoogleAdsException gae) {
// Trích xuất các chủ đề chính sách có thể bỏ qua.
List<String> ignorableTopics = fetchIgnorablePolicyTopics(gae);
// Gửi yêu cầu miễn trừ vi phạm chính sách.
requestExemption(ignorableTopics, googleAdsClient, operation, customerId);
}
}
/**
* Lấy danh sách các chủ đề chính sách có thể bỏ qua.
*/
private List<String> fetchIgnorablePolicyTopics(GoogleAdsException gae) {
List<String> ignorableTopics = new ArrayList<>();
for (GoogleAdsError error : gae.getGoogleAdsFailure().getErrorsList()) {
if (error.getDetails() != null) {
PolicyFindingDetails details = error.getDetails().getPolicyFindingDetails();
if (details != null) {
for (PolicyTopicEntry entry : details.getPolicyTopicEntriesList()) {
ignorableTopics.add(entry.getTopic());
}
}
}
}
return ignorableTopics;
}
/**
* Gửi yêu cầu miễn trừ vi phạm chính sách.
*/
private void requestExemption(
List<String> ignorableTopics,
GoogleAdsClient googleAdsClient,
AdGroupAdOperation operation,
long customerId) {
try (AdGroupAdServiceClient client =
googleAdsClient.getLatestVersion().createAdGroupAdServiceClient()) {
AdGroupAdOperation.Builder operationBuilder = operation.toBuilder();
operationBuilder.getPolicyValidationParameterBuilder()
.addAllIgnorablePolicyTopics(ignorableTopics);
MutateAdGroupAdsResponse response = client.mutateAdGroupAds(
String.valueOf(customerId), ImmutableList.of(operationBuilder.build()));
System.out.printf(“Quảng cáo đã được thêm với tên tài nguyên: ‘%s’%n”,
response.getResults(0).getResourceName());
}
}
}
Việc xử lý các lỗi vi phạm chính sách và yêu cầu miễn trừ quảng cáo trong Google Ads là một kỹ năng quan trọng, giúp bạn tối ưu hóa chiến dịch và đảm bảo hiệu quả quảng cáo. Hy vọng qua bài viết này, bạn đã nắm rõ các bước thực hiện cũng như cách áp dụng chúng vào thực tế. Hãy tiếp tục theo dõi để cập nhật những thông tin hữu ích về Google Ads và các chiến lược quảng cáo trực tuyến khác.