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. Các bản nháp và thử nghiệm này đượ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 nháp là bản sao của một chiến dịch hiện có. Bản nháp sẽ không phân phát quảng cáo của riêng nó, nhưng có thể được dùng để triển khai 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.

Một 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, tách thử nghiệm thành một chiến dịch độc lập hoặc bỏ 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 để xử lý bản nháp và thử nghiệm trong 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 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ị (không bao gồm chiến dịch Quảng cáo ứng dụng di động cho Mạng Hiển thị) và 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ề một DraftOperation, một thao tác điển hình trong Tập lệnh. Hãy xem hướng dẫn về trình tạo để biết thêm thông tin chi tiết.

draft được xác định duy nhất bằng cách kết hợp mã chiến dịch cơ sở và mã bản nháp. Vui lòng xem DraftSelector.withIds() để biết thêm thông tin.

Cấp phé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. Để triển khai các bản cập nhật cho chiến dịch cơ sở, bạn sẽ truyền các thay đổi thông qua chiến dịch nháp.

Chiến dịch nháp, giống như mọi chiến dịch khác, có các phương thức để lấy và đặt nhiều thuộc tính 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ũng được thực hiện cho chiến dịch nháp 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 nháp có quảng cáo vi phạm chính sách.

Triển khai bản nháp

Sau khi cấp phép 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 sẽ 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 trên thẻ bản nháp của giao diện người dùng Google Ads.

    draft.remove();
    
  2. Nếu quyết định giữ lại các thay đổi đã thực hiện trong bản nháp, bạn có thể tiếp tục áp dụng các thay đổi đó:

    draft.startApplying();
    

    Phương thức này bắt đầu quá trình áp dụng 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 này hoàn tất.

  3. 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 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ừ chiến dịch cơ sở. Bạn tạo 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ơ sở, còn nhóm còn lại (được gọi là nhóm thử nghiệm) sẽ chứa một chiến dịch dự thảo mới mà bạn sẽ tuỳ chỉnh theo các bước cho bản nháp ở trên trước khi lên lịch thử nghiệm.

Khi tạo một thử nghiệm, hãy nhớ thiết lập tất cả các thông tin sau trong trình tạo:

withCampaign
Chiến dịch mà bạn muốn thử nghiệm dựa trên đó.
withTrafficSplitPercent
Lưu lượng truy cập sẽ chuyển đến nhóm thử nghiệm là bao nhiêu. Đối với tỷ lệ 50%, hãy 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 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 bạn về mục tiêu của mình khi tạo mục tiêu đó. Giá trị mặc định phù hợp là [{metric: 'CLICKS', direction: 'INCREASE'}].

Tỷ lệ phần trăm phân chia lưu lượng truy cập xác định phần lưu lượng truy cập sẽ thấy 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 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, các thử nghiệm được xác định 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, bản thân experiment không phải là một chiến dịch. Thay vào đó, chiến dịch này liên kết chiến dịch cơ sở, 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 một chiến dịch thử nghiệm, ngoại trừ các 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 đó, các 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 quá trình không đồng bộ vì 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 để 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 sang giai đoạn hoàn tất một thử nghiệm Đã hoàn tất, đồng thời vẫn có thể xem 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 sẽ không thể đảo ngược việc xoá thử nghiệm, nhưng 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ó 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 đầy đủ mà không ảnh hưởng đến chiến dịch cơ sở. Quá trình này, còn gọi là quá trình chuyển đổi, 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ể dùng chung ngân sách với chiến dịch cơ sở nữa, vì vậy, bạn cần phải đặt ngân sách mới. Chiến dịch đã chuyển đổi cũng giống như các 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à 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 giới thiệu khái niệm về thực thể cơ sở. Chiến dịch thử nghiệm và bản nháp cũng như các nhóm quảng cáo trong đó khác với 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 cơ sở và nhóm quảng cáo: getBaseCampaign()getBaseAdGroup().

Các phương thức này trả về thực thể gọi nếu được chiến dịch cơ sở hoặc nhóm quảng cáo gọi. 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 mới Campaign.draftCampaigns()Campaign.experimentCampaigns() cho phép bạn truy cập vào tất cả chiến dịch thử nghiệm và bản nháp 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 các chiến dịch nháp 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 đồng bộ:

  • Draft.startApplying()
  • Experiment.startApplying()
  • Experiment.startScheduling()

Bạn nên chờ để 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 sẽ hiển thị 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, trạng thái 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 lỗi.

Một số phương thức cũng có thể 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 một 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ự, việc tạo một thử nghiệm và ngay lập tức tìm nạp chiến dịch nháp của thử nghiệm đó 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 các tập lệnh đó và chỉ tiếp tục với tập lệnh không thành công trong bản xem trước nếu bạn cho rằng nguyên nhân là do các hạn chế trong chế độ xem trước.