แบบร่างและการทดสอบแคมเปญ

สคริปต์ Google Ads สนับสนุนแบบร่างแคมเปญและ การทดสอบ ซึ่งใช้เพื่อ เตรียมพร้อมและทดสอบการเปลี่ยนแปลงในแคมเปญบนเครือข่าย Search และเครือข่ายดิสเพลย์

ฉบับร่างคือโคลนของแคมเปญที่มีอยู่ซึ่งจะไม่แสดงโฆษณาของตนเอง แต่ เพื่อดำเนินการเปลี่ยนแปลงโดยไม่ต้องแก้ไขแคมเปญเดิมได้ การเปลี่ยนแปลงแบบทีละขั้นอาจนำไปใช้กับแคมเปญฐานได้

การทดสอบจะเรียกใช้แคมเปญที่ปรับแต่งได้ควบคู่ไปกับแคมเปญเดิม และแสดงโฆษณาตามเปอร์เซ็นต์การเข้าชมที่ระบุ อิงตาม ในการทดสอบ คุณสามารถใช้การเปลี่ยนแปลงกับแคมเปญดั้งเดิม แยกการทดสอบไปยังแคมเปญอิสระ หรือยกเลิกการทดสอบ แคมเปญ

คู่มือนี้จะอธิบายเวิร์กโฟลว์พื้นฐานสําหรับการทํางานกับฉบับร่างและการทดสอบ ในสคริปต์

ฉบับร่าง

สร้างฉบับร่าง

แบบร่างสร้างขึ้นจากแคมเปญพื้นฐานที่มีอยู่โดยใช้ DraftBuilder และระบุชื่อที่ไม่ซ้ำ แคมเปญพื้นฐานต้องเป็นเครือข่าย Search และเครือข่าย Search แคมเปญที่มีการขยายไปยังเครือข่าย Display หรือแคมเปญ Display (ยกเว้นแอปบนอุปกรณ์เคลื่อนที่ สำหรับเครือข่ายดิสเพลย์) และต้องไม่มีงบประมาณที่ใช้ร่วมกัน

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() แสดงผลเป็น DraftOperation, การทำงานทั่วไปในสคริปต์ ดูคำแนะนำเกี่ยวกับ ของเครื่องมือสร้างเพื่อดูรายละเอียดเพิ่มเติม

draft จะได้รับการระบุโดยไม่ซ้ำกันด้วยชุดค่าผสมของรหัสแคมเปญฐานและ รหัสฉบับร่าง โปรดดู DraftSelector.withIds() เพื่อดูข้อมูลเพิ่มเติม

จัดสรรแคมเปญร่าง

ออบเจ็กต์ draft เกี่ยวข้องกับแคมเปญฐานและแคมเปญร่าง ไปยังขั้นตอนการอัปเดต กับแคมเปญพื้นฐาน คุณจะเผยแพร่การเปลี่ยนแปลงผ่านแคมเปญร่าง

แคมเปญร่างมีวิธีรับและตั้งค่าเช่นเดียวกับแคมเปญอื่นๆ แอตทริบิวต์ต่างๆ เช่น เกณฑ์ กลุ่มโฆษณา ราคาเสนอ และโฆษณา

const draftCampaign = draft.getDraftCampaign();

draftCampaign.setAdRotationType("CONVERSION_OPTIMIZE");
draftCampaign.createNegativeKeyword("shoes");

โปรดทราบว่า การตรวจสอบนโยบายโฆษณาจะทำกับแคมเปญร่างเช่นเดียวกับ กับแคมเปญพื้นฐาน คุณจะไม่สามารถเรียกใช้การทดสอบจาก แคมเปญร่างที่มีโฆษณาที่ละเมิดนโยบาย

ดำเนินการฉบับร่าง

หลังจากจัดสรรแคมเปญร่างแล้ว คุณสามารถดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้

  1. แต่หากไม่ต้องการใช้การเปลี่ยนแปลง คุณก็นำฉบับร่างออกได้ การนำฉบับร่างออกจะยกเลิกไม่ได้ แต่ยังดูได้ในส่วนทั้งหมด ในแท็บแบบร่างของ UI ของ Google Ads

    draft.remove();
    
  2. หากเลือกที่จะเก็บการเปลี่ยนแปลงที่ทำในฉบับร่างไว้ ก็ดำเนินการต่อได้ แล้วนำไปปรับใช้:

    draft.startApplying();
    

    วิธีนี้จะเริ่มต้นกระบวนการใช้การอัปเดตกับฐาน แคมเปญ ดังนั้นฉบับร่างจะมีสถานะ กำลังใช้... ในส่วน UI ของ Google Ads อย่างไรก็ตาม วิธีนี้จะไม่แจ้งให้คุณทราบเมื่อกระบวนการ เสร็จสมบูรณ์

  3. หากต้องการทดสอบการเปลี่ยนแปลงก่อน คุณสามารถใช้แบบร่างเพื่อ สร้างการทดสอบ

การทดสอบ

สร้างการทดสอบ

experiment คล้ายกับแบบร่างและยังสร้างขึ้นจากฐานด้วย แคมเปญ คุณสร้าง experiment ที่มี ExperimentBuilder วิธีนี้จะสร้างการทดสอบที่มี "สล็อตแมชชีน" 2 เครื่องโดยอัตโนมัติ ที่แสดงถึง ส่วนต่างๆ ของการทดสอบ เครื่องหนึ่ง (เรียกว่ากลุ่มควบคุม) จะ มีแคมเปญฐาน และอีกแคมเปญ (เรียกว่ากลุ่มทดสอบ) จะ มีแคมเปญร่างใหม่ซึ่งคุณจะต้องปรับแต่งตามขั้นตอนต่างๆ สำหรับ ฉบับร่างด้านบนก่อนที่จะตั้งเวลาการทดสอบ

ขณะที่สร้างการทดสอบ อย่าลืมตั้งค่าสิ่งต่อไปนี้ทั้งหมดใน เครื่องมือสร้าง:

withCampaign
แคมเปญที่คุณต้องการให้ใช้การทดสอบ
withTrafficSplitPercent
จำนวนการเข้าชมที่จะส่งไปยังกลุ่มทดสอบ สำหรับ 50% ให้ระบุ 50
withStartDate และ withEndDate
ระบุวันที่เริ่มต้นและวันที่สิ้นสุดของแคมเปญ ระบุใน YYYYMMdd รูปแบบ
withType
SEARCH_CUSTOM หรือ DISPLAY_CUSTOM ขึ้นอยู่กับเครือข่ายที่คุณใช้ กำลังใช้
withSuffix
ระบุคำต่อท้ายที่จะเพิ่มลงในชื่อแคมเปญกลุ่มทดสอบ เมื่อสร้างขึ้นมา
withGoals
ระบุเป้าหมายของการทดสอบนี้ นี่เป็นการช่วยเตือนให้ตัวคุณเอง เป้าหมายของคุณเมื่อจะสร้าง ค่าเริ่มต้นที่ดีคือ [{metric: 'CLICKS', direction: 'INCREASE'}]

เปอร์เซ็นต์การแยกการเข้าชมจะเป็นตัวกำหนดส่วนของการเข้าชมที่จะแสดง โฆษณาจากแคมเปญการทดสอบแทนที่จะเป็นแคมเปญฐาน ด้วยเหตุนี้ แคมเปญฐานแต่ละแคมเปญมีการทดสอบที่ทำงานอยู่ได้เพียงครั้งละ 1 รายการ

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();

การทดสอบจะได้รับการระบุโดยไม่ซ้ำกันด้วยรหัสเดียว ซึ่งต่างจากแบบร่าง โปรดดู ExperimentSelector.withIds() เพื่อดูข้อมูลเพิ่มเติม

จัดสรรแคมเปญการทดสอบ

เช่นเดียวกับ draft experiment เองก็ไม่ใช่แคมเปญ แต่เป็น จะเกี่ยวข้องกับแคมเปญพื้นฐาน แบบร่าง และแคมเปญการทดสอบ ช่องของ แคมเปญทดสอบจะแก้ไขได้โดยมีข้อยกเว้นต่อไปนี้

  • ชื่อ
  • สถานะ
  • วันที่เริ่มต้น
  • วันที่สิ้นสุด
  • งบประมาณ
const experimentCampaign = experiment.getExperimentCampaign();

// Will succeed.
experimentCampaign.setAdRotationType("ROTATE_FOREVER");
experimentCampaign.createNegativeKeyword("sneakers");

// Will fail.
experimentCampaign.setName("INSERT_EXPERIMENT_NAME_HERE");

สามารถเปลี่ยนชื่อ วันที่เริ่มต้น และวันที่สิ้นสุดในการทดสอบได้ หลังจากนั้น การทดสอบก็จะมีผลกับแคมเปญการทดสอบ

// Will succeed.
experiment.setName("INSERT_EXPERIMENT_NAME_HERE");

// Will succeed if date is acceptable.
const date = "20220601";
experiment.setStartDate(date);

หากต้องการเริ่มการทดสอบ โปรดโทรหา experiment.startScheduling() นี่คือ แบบไม่พร้อมกัน เนื่องจากต้องคัดลอกการตั้งค่าทั้งหมดจากแคมเปญพื้นฐาน

หลังจากการทดสอบสิ้นสุด

คุณมีตัวเลือก 2-3 อย่างเมื่อการทดสอบเสร็จสมบูรณ์ เราขอแนะนำให้ การทดสอบเสร็จสิ้นแล้ว จึงจะหยุดแสดงโฆษณา แต่คุณสามารถ ก็ยังคงโต้ตอบกับสิ่งนั้น คุณยังคงนำการทดสอบที่เสร็จสิ้นออกแล้ว นำไปใช้ได้ หรือไม่ก็ยังคงสามารถเข้าถึงสถิติประสิทธิภาพของแคมเปญได้

experiment.finish();
const stats = experimentCampaign.getStatsFor("INSERT_TIME_PERIOD_HERE");
  • หากคุณไม่พอใจกับการทดสอบที่พิจารณาจากสถิติ คุณสามารถดู นำการทดสอบออก ซึ่งจะเป็นการนำแคมเปญการทดสอบออกด้วย กำลังนำออก การทดสอบไม่สามารถย้อนกลับได้ แต่ยังสามารถดูได้ใน ทั้งหมด ในแท็บการทดสอบของ UI ของ Google Ads

    experiment.remove();
    
  • หากคุณพอใจกับผลการทดสอบ คุณมี 2 ตัวเลือก ได้แก่

    1. คุณเริ่มใช้การเปลี่ยนแปลงได้ และเช่นเดียวกันกับแบบร่าง คุณจะ จะได้รับแจ้งเมื่อกระบวนการเสร็จสมบูรณ์

      experiment.startApplying();
      
    2. คุณสามารถสร้างแคมเปญการทดสอบในฐานะ แคมเปญที่ทำงานอย่างเต็มรูปแบบ โดยไม่มีผลกระทบต่อแคมเปญพื้นฐาน ช่วงเวลานี้ หรือที่เรียกว่า สำเร็จการศึกษา เสร็จสมบูรณ์ทันทีและจําเป็นต้องมีการตั้งงบประมาณใหม่

      const budget = AdsApp.budgets()
          .withCondition(`campaign_budget.id = ${budgetId}`)
          .get()
          .next();
      
      experiment.graduate(budget);
      

      แคมเปญใหม่จะใช้งบประมาณร่วมกับแคมเปญพื้นฐานไม่ได้อีก ซึ่งทำให้จำเป็นต้องใช้งบประมาณใหม่ แคมเปญที่จบการศึกษานั้นก็เหมือนกับ แคมเปญปกติ ในทุกฟิลด์สามารถแก้ไขได้ และ สามารถใช้เป็นแคมเปญฐานสําหรับแบบร่างและการทดสอบได้มากขึ้น

ข้อควรพิจารณาอื่นๆ

เอนทิตีฐาน

นอกจากนี้ การแนะนำแบบร่างและการทดสอบในสคริปต์ Google Ads ยังแนะนำ ของเอนทิตีฐาน ร่างและทดลองแคมเปญและกลุ่มโฆษณาใน แตกต่างจากแคมเปญฐานเดิม จึงเป็นเหตุผลที่ Campaign และ AdGroup ในตอนนี้ มีวิธีเข้าถึงแคมเปญพื้นฐานและกลุ่มโฆษณา: getBaseCampaign() และ getBaseAdGroup()

วิธีการเหล่านี้จะแสดงเอนทิตีการโทร หากเรียกใช้โดยแคมเปญพื้นฐานหรือโฆษณา กลุ่ม เอนทิตีภายในแคมเปญและกลุ่มโฆษณา เช่น คีย์เวิร์ดและโฆษณา รวมถึง ได้รับวิธีการดังกล่าว

แคมเปญได้รับแอตทริบิวต์ isBaseCampaign() isDraftCampaign(), และ isExperimentCampaign()

ฟิลด์ Campaign.draftCampaigns() และ Campaign.experimentCampaigns() ช่วยให้คุณเข้าถึงแคมเปญฉบับร่างและแคมเปญการทดสอบทั้งหมดที่มี โดยใช้แคมเปญหลักเป็นแคมเปญหลัก แต่คุณไม่สามารถเลือกฉบับร่าง แคมเปญที่มี CampaignSelector.withCondition(); ใช้ AdsApp.drafts() แทน

การจัดการข้อผิดพลาด

วิธีการต่อไปนี้ที่เกี่ยวข้องกับฉบับร่างและการทดสอบจะดำเนินการต่อเมื่อ สคริปต์จะทำงาน แต่อาจล้มเหลวไม่พร้อมกัน

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

คุณควรรอตรวจสอบว่าการดำเนินการเหล่านี้สำเร็จหรือไม่ UI ของ Google Ads แสดงสถานะใช้แล้วหรือใช้งานอยู่หลังการดำเนินการเสร็จสิ้น startApplying() และ startScheduling() ตามลำดับ และแสดงให้เห็นว่า ไม่สามารถใช้ได้หรือไม่สามารถสร้างเมื่อล้มเหลว ให้คุณคลิกเพื่อ ดูข้อผิดพลาดได้

นอกจากนี้ อาจเป็นไปได้ว่าบางวิธีดำเนินการไม่สำเร็จในขั้นแสดงตัวอย่าง แต่ดำเนินการสำเร็จ หลังจากทำงาน เช่น หลังจากสร้างฉบับร่าง

const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.

การดำเนินการนี้จะไม่สำเร็จในโหมดแสดงตัวอย่างเนื่องจากเข้าถึงแคมเปญร่างไม่ได้ ทันที

ในทำนองเดียวกัน การสร้างการทดสอบและพยายามดึงข้อมูลแบบร่างทันที แคมเปญจะล้มเหลวในโหมดแสดงตัวอย่าง เนื่องจากไม่ได้สร้างแบบร่างจริง

ด้วยเหตุนี้ ให้ตรวจสอบบันทึกด้านล่างรายการสคริปต์หลังจากเรียกใช้สคริปต์ แล้วดำเนินการกับสคริปต์แสดงตัวอย่างที่ล้มเหลวต่อ หากคุณเชื่อว่าสาเหตุเกิดจาก ข้อจำกัดในโหมดแสดงตัวอย่าง