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

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

การดึงข้อมูลแคมเปญ Performance Max

แคมเปญ Performance Max มีให้บริการผ่าน performanceMaxCampaigns คอลเล็กชันของ AdsApp ออบเจ็กต์ คุณสามารถเรียกดูข้อมูลเหล่านี้ได้ตามปกติ:

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 เพื่อ ปรับแต่งผลลัพธ์เพิ่มเติม ใช้เครื่องมือสร้างคำค้นหาสำหรับรายงานนี้ type เพื่อสร้างสรรค์ คำค้นหาของคุณเอง

เมื่อคุณมีชิ้นงานเป้าหมายแล้ว ให้โทรหา 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);