สคริปต์ 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");
ระบบจะตรวจสอบนโยบายโฆษณาสำหรับแคมเปญร่างเช่นเดียวกับแคมเปญพื้นฐาน คุณจะไม่สามารถเรียกใช้การทดสอบจากแคมเปญร่างที่มีโฆษณาที่ละเมิดนโยบาย
เรียกใช้แบบร่าง
หลังจากจัดเตรียมแคมเปญร่างแล้ว คุณสามารถทำอย่างใดอย่างหนึ่งต่อไปนี้
หากไม่ต้องการใช้การเปลี่ยนแปลง ก็เพียงแค่นำแบบร่างออก การนำแบบร่างออกเป็นการดำเนินการที่ไม่สามารถย้อนกลับได้ แต่คุณยังคงดูแบบร่างได้ในส่วนแบบร่างทั้งหมด ในแท็บแบบร่างของ UI ของ Google Ads
draft.remove();หากตัดสินใจเก็บการเปลี่ยนแปลงที่ทำในแบบร่างไว้ คุณก็สามารถนำการเปลี่ยนแปลงไปใช้ได้โดยทำดังนี้
draft.startApplying();เมธอดนี้จะเริ่มกระบวนการนำการอัปเดตไปใช้กับแคมเปญพื้นฐาน ดังนั้นแบบร่างจะมีสถานะกำลังนำไปใช้... ใน UI ของ Google Ads อย่างไรก็ตาม เมธอดนี้จะ ไม่ แจ้งให้คุณทราบเมื่อกระบวนการเสร็จสมบูรณ์
หากต้องการทดสอบการเปลี่ยนแปลงก่อน คุณสามารถใช้แบบร่างเพื่อสร้างการทดสอบ
การทดสอบ
การทดสอบจะเรียกใช้แคมเปญที่ปรับแต่งได้แบบขนานกับแคมเปญเดิม และแสดงโฆษณาต่อการเข้าชมตามเปอร์เซ็นต์ที่ระบุ คุณสามารถนำการเปลี่ยนแปลงไปใช้กับแคมเปญเดิม แยกการทดสอบออกเป็นแคมเปญอิสระ หรือยกเลิกแคมเปญการทดสอบได้โดยพิจารณาจากผลลัพธ์ของการทดสอบ
สร้างการทดสอบ
experiment จะคล้ายกับฉบับร่าง และสร้างขึ้นจากแคมเปญพื้นฐานด้วย
คุณสร้าง experiment ด้วย ExperimentBuilder วิธีนี้จะสร้างการทดสอบที่มี "กลุ่ม" 2 กลุ่มโดยอัตโนมัติ ซึ่งแสดงถึงส่วนต่างๆ ของการทดสอบ กลุ่มหนึ่ง (เรียกว่ากลุ่มควบคุม) จะมีแคมเปญฐาน และอีกกลุ่มหนึ่ง (เรียกว่ากลุ่มทดสอบ) จะมีแคมเปญร่างใหม่ที่คุณจะปรับแต่ง (ตามขั้นตอนสำหรับแบบร่างที่แสดงไว้ก่อนหน้านี้) ก่อนที่จะกำหนดเวลาการทดสอบ
เมื่อสร้างการทดสอบ โปรดตรวจสอบว่าได้ตั้งค่าทั้งหมดต่อไปนี้ในเครื่องมือสร้าง
withCampaign- แคมเปญที่ต้องการใช้เป็นฐานสำหรับการทดสอบ
withTrafficSplitPercent- ปริมาณการเข้าชมที่จะไปยังกลุ่มทดสอบ หากต้องการ 50% ให้ระบุ
50 withStartDateและwithEndDate- ระบุวันที่เริ่มต้นและวันที่สิ้นสุดของแคมเปญ ระบุในรูปแบบ
YYYYMMdd withType- `SEARCH_CUSTOM` หรือ `
SEARCH_CUSTOM`DISPLAY_CUSTOM` ขึ้นอยู่กับเครือข่ายที่คุณ ใช้ withSuffix- ระบุคำต่อท้ายที่จะเพิ่มลงในชื่อแคมเปญทดสอบเมื่อสร้าง
withGoals- ระบุเป้าหมายสำหรับการทดสอบนี้ ซึ่งเป็นเพียงการเตือนตัวเองว่าคุณมีเป้าหมายอะไรเมื่อสร้างการทดสอบ ค่าเริ่มต้นที่ดีคือ
[{metric: 'CLICKS', direction: 'INCREASE'}]
DISPLAY_CUSTOM
เปอร์เซ็นต์การแยกการเข้าชมจะเป็นตัวกำหนดว่าการเข้าชมส่วนใดที่จะแสดงโฆษณาจากแคมเปญการทดสอบแทนแคมเปญพื้นฐาน ด้วยเหตุนี้ แคมเปญพื้นฐานแต่ละแคมเปญจึงมีการทดสอบที่กำลังทำงานได้เพียงครั้งละ 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 ตัวเลือกดังนี้
คุณสามารถเริ่มนำการเปลี่ยนแปลงไปใช้ได้ และเช่นเดียวกับแบบร่าง คุณจะไม่ได้รับการแจ้งเตือนเมื่อกระบวนการเสร็จสมบูรณ์
experiment.startApplying();คุณสามารถกำหนดให้แคมเปญการทดสอบเป็นแคมเปญอิสระที่ทำงานได้อย่างเต็มรูปแบบ โดยไม่ส่งผลกระทบต่อแคมเปญพื้นฐาน กระบวนการนี้ เรียกว่า การเลื่อนระดับ, ซึ่งจะเสร็จสมบูรณ์ทันทีและต้องตั้งงบประมาณใหม่
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.
การดำเนินการนี้จะล้มเหลวในโหมดแสดงตัวอย่างเนื่องจากเข้าถึงแคมเปญร่างไม่ได้ทันที
ในทำนองเดียวกัน การสร้างการทดสอบและพยายามดึงข้อมูลแคมเปญร่างทันทีจะล้มเหลวในโหมดแสดงตัวอย่าง เนื่องจากระบบไม่ได้สร้างแบบร่างขึ้นจริง
ด้วยเหตุนี้ ให้ตรวจสอบบันทึกด้านล่างรายการสคริปต์หลังจากเรียกใช้ และดำเนินการกับสคริปต์ที่ล้มเหลวในโหมดแสดงตัวอย่างก็ต่อเมื่อคุณเชื่อว่าสาเหตุเกิดจากข้อจำกัดในโหมดแสดงตัวอย่าง