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