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

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

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

แบบร่าง

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

สร้างแบบร่าง

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

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

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

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