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