สคริปต์ Google Ads ช่วยให้คุณจัดการแคมเปญ Performance Max ได้
คุณใช้สคริปต์เพื่อดึงข้อมูลแคมเปญ Performance Max จัดการกลุ่มชิ้นงาน
และเรียกใช้รายงานได้ แต่จะใช้สคริปต์เพื่อสร้างแคมเปญ Performance Max
ไม่ได้ หากต้องการดำเนินการขั้นสูงเพิ่มเติม โปรดดูส่วนที่เหลือของคู่มือนี้
ซึ่งแสดงแนวทางทั่วไปเพิ่มเติมโดยใช้ mutate
การดึงข้อมูลแคมเปญ Performance Max
แคมเปญ Performance Max พร้อมใช้งานผ่านคอลเล็กชันของออบเจ็กต์ AdsApp
performanceMaxCampaigns
คุณสามารถดึงข้อมูลได้ตามปกติโดยทำดังนี้
const campaignName = "My Performance Max campaign";
const campaignIterator = AdsApp.performanceMaxCampaigns()
.withCondition(`campaign.name = "${campaignName}"`)
.get();
for (const campaign of campaignIterator) {
...
}
แคมเปญ Performance Max ไม่มีกลุ่มโฆษณาหรือออบเจ็กต์โฆษณาที่คุณดูได้ ซึ่งแตกต่างจากแคมเปญประเภทอื่นๆ บางประเภท โดยระบบจะจัดการทุกอย่างที่เกี่ยวข้องกับแนวคิดเหล่านี้สำหรับแคมเปญอื่นๆ โดยอัตโนมัติตามกลุ่มชิ้นงานที่คุณตั้งค่า
ชิ้นงานและกลุ่มชิ้นงาน
โฆษณาจากแคมเปญ Performance Max ทำงานโดยอิงตามชิ้นงาน เช่น วิดีโอ รูปภาพ บรรทัดแรก และคำอธิบาย ซึ่งคุณเป็นผู้ระบุหรือระบบสร้างขึ้นโดยอัตโนมัติ ดูภาพรวมทั้งหมดของชิ้นงานประเภทที่จำเป็นได้ที่คู่มือชิ้นงาน Performance Max ของ Google Ads API
ระบบจะรวมชิ้นงานสําหรับแคมเปญ Performance Max ไว้ด้วยกันเป็นกลุ่มชิ้นงาน และแคมเปญ Performance Max แต่ละแคมเปญต้องมีกลุ่มชิ้นงานอย่างน้อย 1 กลุ่ม คุณไม่สามารถสร้างกลุ่มชิ้นงานเหล่านี้ในสคริปต์ได้โดยตรง แต่สามารถเพิ่มและนำชิ้นงานออกจากกลุ่มชิ้นงานที่มีอยู่ได้
เพิ่มชิ้นงานลงในกลุ่มชิ้นงาน
ก่อนอื่นให้สร้างชิ้นงานโดยทำดังนี้
const imageUrl = "http://www.example.com/example.png";
const imageBlob = UrlFetchApp.fetch(imageUrl).getBlob();
const assetOperation = AdsApp.adAssets().newImageAssetBuilder()
.withName("new asset name")
.withData(imageBlob)
.build();
const imageAsset = assetOperation.getResult();
จากนั้นใช้ชิ้นงานที่เพิ่งสร้าง แล้วเพิ่มลงในกลุ่มชิ้นงานที่มีอยู่โดยทำดังนี้
// First, fetch the Performance Max campaign we want to operate on.
const campaignIterator = AdsApp.performanceMaxCampaigns()
.withCondition(`campaign.name = '${campaignName}'`)
.get();
let campaign;
if (campaignIterator.hasNext()) {
campaign = campaignIterator.next();
} else {
throw `No campaign found with name ${campaignName}.`
}
// Then, get that campaign's asset groups.
const assetGroupIterator = campaign.assetGroups().get();
// The campaign must have at least one asset group, so we can just assume so here.
const assetGroup = assetGroupIterator.next();
// Add the asset from the previous step.
assetGroup.addAsset(imageAsset, 'MARKETING_IMAGE');
โปรดสังเกตด้วยว่าคุณต้องระบุประเภทของชิ้นงานในขั้นตอนสุดท้าย ดูรายการประเภทชิ้นงานทั้งหมดได้ในเอกสารประกอบของ Google Ads API
หากต้องการใช้ชิ้นงานที่มีอยู่ ให้สร้างเครื่องมือเลือกชิ้นงานก่อน โดยทำดังนี้
const assetSelector = AdsApp.adAssets().assets();
จากนั้นใช้withCondition
ตัวกรองเพื่อจำกัดให้เหลือเฉพาะชิ้นงานที่ต้องการ
ดำเนินการ ดู
AssetSelector
เอกสารอ้างอิงเพื่อดูรายการตัวเลือกตัวกรองทั้งหมด
สุดท้าย ให้ดึงข้อมูลตัววนซ้ำและวนซ้ำเหมือนกับเอนทิตีอื่นๆ
const assetIterator = assetSelector.get();
for (const asset of assetIterator) {
...
}
เนื้อหาข้อความ
ชิ้นงานข้อความจะทำงานแตกต่างออกไปเล็กน้อยตรงที่คุณไม่จำเป็นต้องสร้างชิ้นงานล่วงหน้า คุณเพียงแค่ระบุข้อความแทนชิ้นงาน แล้วระบบจะ สร้างชิ้นงานให้คุณโดยอัตโนมัติ หากข้อความซ้ำกับชิ้นงานข้อความที่มีอยู่ ระบบจะนำชิ้นงานที่มีอยู่กลับมาใช้แทน
ตัวอย่างเช่น วิธีสร้างชิ้นงานบรรทัดแรกมีดังนี้
assetGroup.addAsset('asset text here', 'HEADLINE');
นำชิ้นงานออกจากกลุ่มชิ้นงาน
คุณยังนำชิ้นงานออกจากกลุ่มชิ้นงานได้ด้วย แต่โปรดทราบว่า คุณต้องมีชิ้นงานบางประเภทตามจำนวนขั้นต่ำ เพื่อให้แคมเปญใช้งานได้
วิธีนำชิ้นงานที่เพิ่มในตัวอย่างก่อนหน้านี้ออกมีดังนี้
assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');
นอกจากนี้ คุณยังดูรายการชิ้นงานในกลุ่มชิ้นงานที่ต้องการได้ด้วยsearch
ฟังก์ชัน:
// The resource name is a unique identifier for this asset group.
const assetGroupName = assetGroup.getResourceName();
results = AdsApp.search(
`SELECT asset.resource_name, asset_group_asset.field_type
FROM asset_group_asset
WHERE asset_group.resource_name = '${assetGroupName}'`
);
ซึ่งจะเลือกชื่อทรัพยากรของชิ้นงานเป็นตัวระบุที่ไม่ซ้ำกัน คุณยังเลือกฟิลด์อื่นๆ ได้ด้วย เช่น asset.type
หรือ asset.text_asset.text
เพื่อ
ปรับแต่งผลลัพธ์เพิ่มเติม ใช้เครื่องมือสร้างคำค้นหาสำหรับรายงานประเภทนี้
เพื่อสร้างคำค้นหาของคุณเอง
เมื่อมีชิ้นงานเป้าหมายแล้ว ให้เรียกใช้ remove
ในกลุ่มชิ้นงานเพื่อนำชิ้นงานออกจากกลุ่มชิ้นงาน
// Let's assume at least one asset is returned. We'll just remove the first
// asset, whatever it is. In your code, customize this to choose the right asset.
const row_info = results.next().asset;
assetGroup.remove(row_info.asset.resource_name, row_info.asset_group_asset.field_type);