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