แคมเปญ Performance Max ที่ใช้ AdsApp

สคริปต์ 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);