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

วิธีที่ดีที่สุดในการจัดการแคมเปญ Performance Max ด้วยสคริปต์ Google Ads คือการใช้กลยุทธ์การเปลี่ยนแปลงเพื่อให้จัดการแคมเปญ Performance Max ได้โดยตรง คุณสร้างแคมเปญ Performance Max ได้ด้วยฟังก์ชัน mutate เท่านั้น อย่างไรก็ตาม คุณยังใช้ออบเจ็กต์อื่นๆ ของ AdsApp เพื่อดึงข้อมูลแคมเปญ Performance Max จัดการกลุ่มชิ้นงาน และเรียกใช้รายงานได้หากต้องการ

การดึงข้อมูลแคมเปญ 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 ในกลุ่มชิ้นงานเพื่อนำชิ้นงานออกจากกลุ่มชิ้นงาน

// This example assumes at least one asset is returned. We'll remove the first
// asset, whatever it is. In your code, customize this to choose the right
// asset to be removed.
const row_info = results.next().asset;
assetGroup.remove(row_info.asset.resource_name, row_info.asset_group_asset.field_type);