สคริปต์ Google Ads รองรับแบบร่างและการทดสอบแคมเปญ ซึ่งใช้เพื่อเตรียมและทดสอบการเปลี่ยนแปลงในแคมเปญ Search และ Display Network
ฉบับร่างคือโคลนของแคมเปญที่มีอยู่ซึ่งจะไม่แสดงโฆษณาของตัวเอง แต่ สามารถใช้เพื่อจัดเตรียมการเปลี่ยนแปลงโดยไม่ต้องแก้ไขแคมเปญเดิม จากนั้น การเปลี่ยนแปลงที่จัดเตรียมไว้จะนําไปใช้กับแคมเปญฐานได้
การทดสอบจะเรียกใช้แคมเปญที่ปรับแต่งได้ควบคู่ไปกับแคมเปญเดิม และแสดงโฆษณาต่อการเข้าชมตามเปอร์เซ็นต์ที่ระบุ คุณสามารถใช้การเปลี่ยนแปลงกับแคมเปญเดิม แยกการทดสอบเป็นแคมเปญอิสระ หรือยกเลิกแคมเปญ การทดสอบได้โดยอิงตามผลลัพธ์ของการทดสอบ
คู่มือนี้อธิบายเวิร์กโฟลว์พื้นฐานสำหรับการทำงานกับฉบับร่างและการทดสอบ ในสคริปต์
ฉบับร่าง
สร้างฉบับร่าง
ฉบับร่างสร้างขึ้นจากแคมเปญพื้นฐานที่มีอยู่โดยใช้
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()
แสดงผล a
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
หรือ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 ตัวเลือกดังนี้
คุณเริ่มใช้การเปลี่ยนแปลงได้ และเช่นเดียวกับฉบับร่าง คุณจะไม่ ได้รับการแจ้งเตือนเมื่อกระบวนการเสร็จสมบูรณ์
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.
การดำเนินการนี้จะล้มเหลวในโหมดตัวอย่างเนื่องจากเข้าถึงแคมเปญฉบับร่างไม่ได้ในทันที
ในทำนองเดียวกัน การสร้างการทดสอบและพยายามดึงแคมเปญฉบับร่างทันทีจะล้มเหลวในโหมดแสดงตัวอย่าง เนื่องจากระบบไม่ได้สร้างฉบับร่างจริงๆ
ด้วยเหตุนี้ โปรดตรวจสอบบันทึกใต้รายการสคริปต์หลังจากเรียกใช้ และดำเนินการกับสคริปต์ที่แสดงตัวอย่างไม่สำเร็จเฉพาะในกรณีที่คุณเชื่อว่าสาเหตุเกิดจาก ข้อจำกัดในโหมดแสดงตัวอย่าง