Bản dự thảo và thử nghiệm chiến dịch

Tập lệnh Google Ads hỗ trợ bản nháp và thử nghiệm chiến dịch, 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 nháp là bản sao của một chiến dịch hiện có, chiến dịch này sẽ không phân phát quảng cáo riêng, nhưng có thể dùng để sắp xếp các thay đổi mà không cần sửa đổi chiến dịch gốc. Sau đó, những thay đổi theo giai đoạn có thể được áp dụng cho chiến dịch căn bản.

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 gốc, phân nhánh thử nghiệm sang một chiến dịch độc lập hoặc bỏ qua chiến dịch thử nghiệm.

Hướng dẫn này giải thích quy trình làm việc 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ăn bản hiện có bằng cách sử dụng DraftBuilder và đặt một tên riêng biệt. Chiến dịch căn bản 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 Quảng cáo ứng dụng dành cho thiết bị di động cho Mạng Hiển thị), đồng thời 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 trình tạo 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 quan đến chiến dịch căn bản và chiến dịch dự thảo. Để cập nhật giai đoạn cho chiến dịch căn bản, bạn cần áp dụng các thay đổi thông qua chiến dịch dự thảo.

Chiến dịch dự thảo cũng giống như mọi chiến dịch khác, đều có các phương thức để nhận và đặt các thuộc tính khác nhau, 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");

Xin lưu ý rằng 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ư quy trình kiểm tra với chiến dịch căn bản. Bạn sẽ không thể chạy thử nghiệ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 cấp phép cho chiến dịch dự thảo, bạn có thể làm theo một trong những cách sau:

  1. Nếu không muốn sử dụng các thay đổi, 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 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 trên giao diện người dùng Google Ads.

    draft.remove();
    
  2. Nếu quyết định giữ lại các thay đổi mình đã thực hiện trong bản nháp, bạn có thể tiếp tục và áp dụng các 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.

  3. Nếu muốn kiểm thử các thay đổi trước, bạn có thể sử dụng bản nháp để tạo 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ó hai "nhóm" đại diện cho các phần khác nhau của thử nghiệm. Một nhóm (còn gọi là nhóm đối chứng) sẽ chứa chiến dịch căn bản, còn nhóm thử nghiệm còn lại (gọi là nhóm thử nghiệm) sẽ chứa một chiến dịch dự thảo mới. Bạn sẽ tuỳ chỉnh theo các bước dành cho bản nháp ở trên trước khi lên lịch thử nghiệm.

Khi xây dựng thử nghiệm, hãy nhớ đặt tất cả các yếu tố sau trong trình tạo:

withCampaign
Chiến dịch mà bạn muốn chạy thử nghiệm.
withTrafficSplitPercent
Mức lưu lượng truy cập sẽ chuyển đến nhóm thử nghiệm. Đối với 50%, chỉ định 50.
withStartDatewithEndDate
Chỉ định ngày bắt đầu và ngày kết thúc của chiến dịch. Chỉ định ở định dạng YYYYMMdd.
withType
SEARCH_CUSTOM hoặc DISPLAY_CUSTOM, tuỳ thuộc vào mạng bạn đang 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 mục tiêu cho thử nghiệm này. Đây chỉ là lời nhắc về những mục tiêu của bạn khi tạo. Giá trị mặc định phù hợp là [{metric: 'CLICKS', direction: 'INCREASE'}].

Tỷ lệ phần trăm phân tách 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ăn bản. Vì lý do này, mỗi chiến dịch cơ sở 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 bởi 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, bản thân experiment không phải là một chiến dịch. Thay vào đó, loại chiến dịch này liên quan đến chiến dịch căn bản, chiến dịch dự thảo 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, trừ các ngoại lệ sau:

  • tên
  • status
  • 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 cho thử nghiệm, sau đó những thay đổi đó sẽ á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 quá trình không đồng bộ vì quá trình này phải sao chép tất cả chế độ cài đặt từ chiến dịch căn bản.

Sau khi thử nghiệm kết thúc

Khi thử nghiệm hoàn tất, bạn có một số lựa chọn. Bạn nên để thử nghiệm kết thúc 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 Đã hoàn tất và truy cập vào số liệu thống kê về hiệu suất của chiến dịch trong thử nghiệm đó.

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 và thao tác này cũng sẽ xoá chiến dịch thử nghiệm. Bạn không thể huỷ thử nghiệm này sau khi xoá, nhưng bạn vẫn có thể xem trong mục Tất cả thử nghiệm trên thẻ thử nghiệm trên giao diện người dùng Google Ads.

    experiment.remove();
    
  • Nếu hài lòng với kết quả thử nghiệm, bạn có hai lựa chọn:

    1. Bạn có thể bắt đầu áp dụng các thay đổi và giống như với 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();
      
    2. 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 toàn diện mà không ảnh hưởng đến chiến dịch căn bản. Quá trình này (còn gọi là tốt nghiệp) sẽ hoàn tất ngay lập tức và yêu cầu bạ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ể chia sẻ ngân sách với chiến dịch căn bản nữa, do chiến dịch này sẽ cần ngân sách mới. Các chiến dịch đã phân cấp cũng giống như chiến dịch thông thường ở chỗ tất cả các trường của chúng đều có thể sửa đổi và có thể đóng vai trò là chiến dịch cơ sở cho nhiều bản nháp và thử nghiệm hơn.

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 đưa ra khái niệm về các thực thể cơ sở. Các chiến dịch dự thảo và thử nghiệm cũng như nhóm quảng cáo trong các chiến dịch đó khác với các chiến dịch cơ sở ban đầu. Đó là lý do tại sao CampaignAdGroup hiện có các phương thức để truy cập vào chiến dịch và nhóm quảng cáo cơ sở: getBaseCampaign()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ở, các 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()Campaign.experimentCampaigns() mới cho phép bạn truy cập vào tất cả các chiến dịch dự thảo và thử nghiệm có chiến dịch gọi làm chiến dịch cơ sở. Tuy nhiên, bạn không thể chọn chiến dịch dự thảo có CampaignSelector.withCondition(); thay vào đó, hãy sử dụng AdsApp.drafts().

Xử lý lỗi

Các phương thức sau đây 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 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 hiển thị các trạng thái Đã áp dụng hoặc Đang hoạt động sau khi hoàn tất thành công startApplying()startScheduling() tương ứng. Đồng thời, biểu tượng này cho biết Không thể áp dụng hoặc Không thể tạo khi không thành công, cho phép bạn nhấp để xem các lỗi.

Cũng có thể xảy ra trường hợp một số phương thức không thành công trong giai đoạn xem trước, nhưng sẽ 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 dự thảo.

Tương tự như vậy, việc tạo thử nghiệm và ngay lập tức tìm nạp chiến dịch dự thảo sẽ không thành công ở chế độ xem trước, vì bản nháp không thực sự được tạo.

Vì lý do này, hãy kiểm tra các nhật ký bên dưới danh sách tập lệnh sau khi chạy các tập lệnh đó và chỉ tiếp tục với tập lệnh không chạy trong bản xem trước nếu bạn cho rằng nguyên nhân là do các giới hạn ở chế độ xem trước.