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

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

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

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

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

ฉบับร่าง

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

แบบร่างสร้างขึ้นจากแคมเปญฐานที่มีอยู่โดยใช้ DraftBuilder และตั้งชื่อที่ไม่ซ้ำกัน แคมเปญพื้นฐานต้องเป็นแคมเปญ Search, แคมเปญในเครือข่าย Search ที่มีส่วนขยายไปยังเครือข่าย Display หรือแคมเปญ 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()

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

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

  • ชื่อ
  • สถานะ
  • วันที่เริ่มต้น
  • วันที่สิ้นสุด
  • งบประมาณ
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.

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

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

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