Tập lệnh Google Ads hỗ trợ bản nháp và thử nghiệm chiến dịch. Đây là những tính năng được dùng để chuẩn bị và thử nghiệm các thay đổi đối với chiến dịch trên Mạng Tìm kiếm và Mạng Hiển thị.
Bản dự thảo là bản sao của một chiến dịch hiện có. Bản dự thảo này sẽ không phân phát quảng cáo của riêng mình, nhưng bạn có thể dùng để dàn dựng các thay đổi mà không cần sửa đổi chiến dịch gốc. Sau đó, bạn có thể áp dụng các thay đổi theo giai đoạn cho chiến dịch cơ sở.
Thử nghiệm chạy một chiến dịch có thể tuỳ chỉnh song song với chiến dịch gốc và hiển thị quảng cáo cho một tỷ lệ phần trăm lưu lượng truy cập được chỉ định. Dựa trên kết quả của thử nghiệm, bạn có thể áp dụng các thay đổi cho chiến dịch ban đầu, phân nhánh thử nghiệm thành một chiến dịch độc lập hoặc huỷ chiến dịch thử nghiệm.
Hướng dẫn này giải thích quy trình cơ bản để làm việc với bản nháp và thử nghiệm trong một tập lệnh.
Bản nháp
Tạo bản nháp
Bản nháp được tạo từ một chiến dịch cơ sở hiện có bằng cách sử dụng DraftBuilder
và cung cấp một tên riêng biệt. Chiến dịch cơ sở phải là chiến dịch Tìm kiếm, chiến dịch trên Mạng Tìm kiếm có tính năng Mở rộng hiển thị hoặc chiến dịch Hiển thị (ngoại trừ chiến dịch Ứng dụng di động cho Mạng Hiển thị) và chiến dịch này không được có ngân sách dùng chung.
const campaign = AdsApp.campaigns()
.withCondition(`campaign.name = "${campaignName}"`)
.get()
.next();
const draftBuilder = campaign.newDraftBuilder()
.withName("INSERT_DRAFT_NAME_HERE")
.build();
const draft = draftBuilder.getResult();
DraftBuilder.build()
trả về DraftOperation
, một thao tác điển hình trong tập lệnh. Hãy xem hướng dẫn dành cho nhà phát triển của chúng tôi để biết thêm thông tin chi tiết.
draft
được xác định riêng biệt bằng tổ hợp mã chiến dịch cơ sở và mã bản nháp. Hãy xem DraftSelector.withIds()
để biết thêm thông tin.
Cung cấp chiến dịch dự thảo
Đối tượng draft
liên kết một chiến dịch cơ sở và một chiến dịch nháp. Để dàn dựng các nội dung cập nhật cho chiến dịch cơ sở, bạn sẽ truyền tải các thay đổi thông qua chiến dịch nháp.
Giống như mọi chiến dịch khác, chiến dịch nháp có các phương thức để nhận và đặt nhiều thuộc tính của chiến dịch, chẳng hạn như tiêu chí, nhóm quảng cáo, giá thầu và quảng cáo.
const draftCampaign = draft.getDraftCampaign();
draftCampaign.setAdRotationType("CONVERSION_OPTIMIZE");
draftCampaign.createNegativeKeyword("shoes");
Các quy trình kiểm tra chính sách quảng cáo được thực hiện cho chiến dịch dự thảo giống như đối với chiến dịch cơ sở. Bạn sẽ không thể chạy thử nghiệm từ một chiến dịch dự thảo có quảng cáo vi phạm chính sách.
Thực hiện bản nháp
Sau khi cung cấp chiến dịch nháp, bạn có thể làm một trong những việc sau:
Nếu không muốn sử dụng các thay đổi này, bạn chỉ cần xoá bản nháp. Bạn không thể huỷ thao tác xoá bản nháp, nhưng bạn vẫn có thể xem bản nháp đó trong mục Tất cả bản nháp trong thẻ bản nháp của giao diện người dùng Google Ads.
draft.remove();
Nếu quyết định giữ lại những thay đổi đã thực hiện trong bản nháp, bạn có thể tiếp tục và áp dụng những thay đổi đó:
draft.startApplying();
Phương thức này bắt đầu quá trình áp dụng các nội dung cập nhật cho chiến dịch cơ sở, vì vậy, bản nháp sẽ có trạng thái Đang áp dụng... trong giao diện người dùng Google Ads. Tuy nhiên, phương thức này sẽ không thông báo cho bạn khi quá trình hoàn tất.
Nếu muốn thử nghiệm các thay đổi trước, bạn có thể sử dụng bản nháp để tạo một thử nghiệm.
Thử nghiệm
Tạo thử nghiệm
experiment
tương tự như bản nháp và cũng được tạo từ một chiến dịch cơ sở. Bạn tạo một experiment
bằng ExperimentBuilder
.
Thao tác này sẽ tự động tạo một thử nghiệm có 2 "nhóm" đại diện cho các phần khác nhau của thử nghiệm. Một nhóm (gọi là nhóm đối chứng) sẽ chứa chiến dịch cơ sở và nhóm còn lại (gọi là nhóm thử nghiệm) sẽ chứa một chiến dịch nháp mới mà bạn sẽ tuỳ chỉnh (theo các bước cho bản nháp đã trình bày trước đó) trước khi lên lịch thử nghiệm.
Khi tạo một thử nghiệm, hãy nhớ đặt tất cả các mục sau trong trình tạo:
withCampaign
- Chiến dịch mà bạn muốn dùng làm cơ sở cho thử nghiệm.
withTrafficSplitPercent
- Lưu lượng truy cập sẽ chuyển đến nhóm thử nghiệm là bao nhiêu. Đối với 50%, hãy chỉ định
50
. withStartDate
vàwithEndDate
- Chỉ định ngày bắt đầu và ngày kết thúc của chiến dịch. Hãy chỉ định theo định dạng
YYYYMMdd
. withType
SEARCH_CUSTOM
hoặcDISPLAY_CUSTOM
, tuỳ thuộc vào mạng mà bạn đang sử dụng.withSuffix
- Chỉ định một hậu tố sẽ được thêm vào tên của chiến dịch thử nghiệm khi chiến dịch đó được tạo.
withGoals
- Chỉ định các mục tiêu cho thử nghiệm này. Đây chỉ là lời nhắc cho chính bạn về mục tiêu của bạn khi tạo dự án. Giá trị mặc định phù hợp là
[{metric: 'CLICKS', direction: 'INCREASE'}]
.
Tỷ lệ phân chia lưu lượng truy cập xác định phần lưu lượng truy cập sẽ hiển thị quảng cáo từ chiến dịch thử nghiệm thay vì chiến dịch cơ sở. Vì lý do này, mỗi chiến dịch gốc chỉ có thể có một thử nghiệm đang chạy tại một thời điểm.
const experiment = AdsApp.newExperimentBuilder()
.withCampaign(campaign)
.withTrafficSplitPercent(50)
.withStartDate("20230501")
.withEndDate("20230601")
.withType("SEARCH_CUSTOM")
.withSuffix("experiment")
.withGoals([{metric: 'CLICKS', direction: 'INCREASE'}])
.build();
// The experimentCampaign represents the customizeable draft.
const experimentCampaign = experiment.getExperimentCampaign();
Không giống như bản nháp, thử nghiệm được xác định riêng biệt bằng một mã nhận dạng duy nhất. Xem
ExperimentSelector.withIds()
để biết thêm thông tin.
Cung cấp chiến dịch thử nghiệm
Tương tự như draft
, experiment
không phải là một chiến dịch. Thay vào đó, nó liên kết chiến dịch gốc, bản nháp và chiến dịch thử nghiệm. Bạn có thể sửa đổi các trường của chiến dịch thử nghiệm, ngoại trừ những trường sau:
- tên
- trạng thái
- ngày bắt đầu
- ngày kết thúc
- ngân sách
const experimentCampaign = experiment.getExperimentCampaign();
// Will succeed.
experimentCampaign.setAdRotationType("ROTATE_FOREVER");
experimentCampaign.createNegativeKeyword("sneakers");
// Will fail.
experimentCampaign.setName("INSERT_EXPERIMENT_NAME_HERE");
Bạn có thể thay đổi tên, ngày bắt đầu và ngày kết thúc của thử nghiệm, sau đó những thay đổi này sẽ được áp dụng cho chiến dịch thử nghiệm.
// Will succeed.
experiment.setName("INSERT_EXPERIMENT_NAME_HERE");
// Will succeed if date is acceptable.
const date = "20220601";
experiment.setStartDate(date);
Để bắt đầu thử nghiệm, hãy gọi experiment.startScheduling()
. Đây là một quy trình không đồng bộ, vì quy trình này phải sao chép tất cả các chế độ cài đặt từ chiến dịch cơ sở.
Sau khi thử nghiệm kết thúc
Khi thử nghiệm kết thúc, bạn có một số lựa chọn. Bạn nên để thử nghiệm hoàn tất hoàn toàn để thử nghiệm ngừng phân phát quảng cáo nhưng bạn vẫn có thể tương tác với thử nghiệm đó. Bạn vẫn có thể xoá, áp dụng hoặc chuyển đổi một thử nghiệm có trạng thái Đã hoàn tất, đồng thời vẫn có thể truy cập vào số liệu thống kê về hiệu suất của chiến dịch đó.
experiment.finish();
const stats = experimentCampaign.getStatsFor("INSERT_TIME_PERIOD_HERE");
Nếu không hài lòng với thử nghiệm dựa trên số liệu thống kê, bạn có thể xoá thử nghiệm. Thao tác này cũng sẽ xoá chiến dịch thử nghiệm. Bạn không thể huỷ thao tác xoá thử nghiệm, nhưng bạn vẫn có thể xem thử nghiệm đó trong mục Tất cả thử nghiệm trong thẻ thử nghiệm của giao diện người dùng Google Ads.
experiment.remove();
Nếu hài lòng với kết quả của thử nghiệm, bạn có 2 lựa chọn:
Bạn có thể bắt đầu áp dụng các thay đổi và giống như bản nháp, bạn sẽ không nhận được thông báo khi quá trình này hoàn tất.
experiment.startApplying();
Bạn có thể thiết lập chiến dịch thử nghiệm dưới dạng một chiến dịch độc lập, hoạt động đầy đủ mà không ảnh hưởng đến chiến dịch cơ sở. Quá trình này (gọi là chuyển đổi) sẽ hoàn tất ngay lập tức và bạn cần đặt ngân sách mới.
const budget = AdsApp.budgets() .withCondition(`campaign_budget.id = ${budgetId}`) .get() .next(); experiment.graduate(budget);
Chiến dịch mới không thể dùng chung ngân sách với chiến dịch cơ sở nữa, do đó, bạn cần phải có một ngân sách mới. Chiến dịch đã hoàn tất giống như chiến dịch thông thường ở chỗ tất cả các trường của chiến dịch đều có thể sửa đổi và chiến dịch đó có thể đóng vai trò là chiến dịch cơ sở cho nhiều bản nháp và thử nghiệm khác.
Lưu ý khác
Thực thể cơ sở
Việc giới thiệu bản nháp và thử nghiệm cho tập lệnh Google Ads cũng giới thiệu khái niệm về các thực thể cơ sở. Chiến dịch thử nghiệm và chiến dịch nháp, cũng như các nhóm quảng cáo trong đó khác biệt với chiến dịch gốc ban đầu. Đó là lý do Campaign
và AdGroup
hiện có các phương thức để truy cập vào chiến dịch gốc và nhóm quảng cáo gốc: getBaseCampaign()
và getBaseAdGroup()
.
Các phương thức này trả về thực thể gọi nếu được gọi bởi một chiến dịch cơ sở hoặc nhóm quảng cáo. Các thực thể trong chiến dịch và nhóm quảng cáo, chẳng hạn như từ khoá và quảng cáo, cũng được cung cấp các phương thức như vậy.
Để giúp theo dõi các thực thể cơ sở, chiến dịch đã được cung cấp các phương thức isBaseCampaign()
, isDraftCampaign()
và isExperimentCampaign()
.
Các phương thức Campaign.draftCampaigns()
và Campaign.experimentCampaigns()
mới cho phép bạn truy cập vào tất cả chiến dịch thử nghiệm và chiến dịch nháp có chiến dịch gọi là chiến dịch cơ sở. Tuy nhiên, bạn không thể chọn chiến dịch nháp bằng CampaignSelector.withCondition()
; thay vào đó, hãy sử dụng AdsApp.drafts()
.
Xử lý lỗi
Các phương thức sau liên quan đến bản nháp và thử nghiệm sẽ tiếp tục khi tập lệnh chạy, nhưng có thể không thành công một cách không đồng bộ:
Draft.startApplying()
Experiment.startApplying()
Experiment.startScheduling()
Bạn nên đợi để kiểm tra xem các thao tác này có thành công hay không. Giao diện người dùng Google Ads cho thấy trạng thái Đã áp dụng hoặc Đang hoạt động sau khi hoàn tất thành công startApplying()
và startScheduling()
, tương ứng. Ngoài ra, hệ thống sẽ cho biết Không thể áp dụng hoặc Không thể tạo khi thất bại, cho phép bạn nhấp vào để xem các lỗi.
Cũng có thể một số phương thức không thành công ở giai đoạn xem trước nhưng thành công sau khi chạy; ví dụ: sau khi tạo bản nháp:
const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.
Thao tác này sẽ không thành công ở chế độ xem trước vì không thể truy cập ngay vào chiến dịch nháp.
Tương tự, việc tạo một thử nghiệm và cố gắng tìm nạp chiến dịch nháp ngay lập tức sẽ không thành công ở chế độ xem trước, vì bản nháp chưa thực sự được tạo.
Vì lý do này, hãy kiểm tra nhật ký bên dưới danh sách tập lệnh sau khi chạy tập lệnh và chỉ tiếp tục với tập lệnh không thành công ở chế độ xem trước nếu bạn cho rằng nguyên nhân là do các hạn chế ở chế độ xem trước.