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

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

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

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

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

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

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

  • name
  • 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.

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

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

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