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

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

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

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

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

ฉบับร่าง

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

แบบร่างสร้างขึ้นจากแคมเปญฐานที่มีอยู่โดยใช้ 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 "แขน" 1 ส่วนซึ่งแสดงถึงส่วนต่างๆ ของการทดสอบโดยอัตโนมัติ กลุ่มหนึ่ง (เรียกว่ากลุ่มควบคุม) จะมีแคมเปญฐาน และอีกกลุ่ม (เรียกว่ากลุ่มทดสอบ) จะมีแคมเปญร่างใหม่ซึ่งคุณจะต้องปรับแต่งตามขั้นตอนของแบบร่างด้านบนก่อนกำหนดเวลาการทดสอบ

เมื่อสร้างการทดสอบ โปรดตรวจสอบว่าได้ตั้งค่าสิ่งต่างๆ ต่อไปนี้ทั้งหมดในโปรแกรมสร้าง

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 แต่จะเชื่อมโยงแคมเปญพื้นฐาน แคมเปญร่าง และแคมเปญทดสอบ ช่องของแคมเปญทดสอบสามารถแก้ไขได้ โดยมีข้อยกเว้นต่อไปนี้

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

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

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

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