คอมโพเนนต์ที่ไม่บังคับของ Performance Max

เป้าหมาย Conversion

เมื่อสร้างแคมเปญ Performance Max ระบบจะสร้างชุดเป้าหมาย Conversion โดยอัตโนมัติซึ่งตรงกับCustomerConversionGoalในบัญชี คุณปรับแต่งข้อความเหล่านี้สําหรับแคมเปญ Performance Max แต่ละแคมเปญได้โดยการอัปเดต

โดยคุณจะต้องดึงข้อมูลรหัสแคมเปญของแคมเปญ Performance Max และรายการเป้าหมาย Conversion ของลูกค้าทั้งหมดก่อน ต่อไปนี้เป็นตัวอย่างการเปลี่ยนเป้าหมายของแคมเปญหนึ่ง แต่คุณยังตั้งค่าโค้ดให้วนซ้ำผ่านแคมเปญ Performance Max หลายแคมเปญได้ด้วย

// Query for a campaign by name. Update this logic to pull the campaigns you'd
// like to edit
const campaignName = "My PMax campaign";
let campaignId = "";

const search = AdsApp.search(`SELECT campaign.id FROM campaign WHERE campaign.name = "${campaignName}"`);
if (search.hasNext()) {
  campaignId = search.next().campaign.id;
  console.log(`Updating conversion goals for ${campaignName}: ${campaignId}`);
}
else
{
  console.log(`No campaign named "${campaignName}" found`);
  // Perform further error handling here
}

// Query for a list of customer conversion goals
const searchResults = AdsApp.search(
  `SELECT
     customer_conversion_goal.category,
     customer_conversion_goal.origin
   FROM customer_conversion_goal`
);

จากนั้นคุณสามารถวนซ้ำเป้าหมาย Conversion ทั้งหมดที่ได้รับกลับมา และสร้าง การดำเนินการอัปเดตสำหรับแคมเปญ Performance Max ปัจจุบันเพื่อปรับแต่ง การกำหนดเป้าหมายสำหรับแต่ละเป้าหมาย ตัวอย่างโค้ดที่แสดงในส่วนนี้ในภายหลังจะตั้งค่าเป้าหมายทั้งหมดเป็นเป้าหมายที่เสนอราคาได้ แต่คุณจะต้องปรับแต่งส่วนนั้นของตรรกะให้ตรงกับสิ่งที่คุณต้องการได้รับจากแคมเปญ

เราขอแนะนำให้ตั้งค่าเป้าหมาย Conversion ในธุรกรรมแยกต่างหากจาก ขั้นตอนการสร้างแคมเปญที่เหลือ CampaignConversionGoalOperation กำหนดให้ตั้งค่า partialFailure สำหรับคำขอเป็น false หากต้องการ เรียกใช้โค้ดนี้ในธุรกรรมเดียวกันกับที่สร้างแคมเปญครั้งแรก คุณ ต้องตั้งค่าการดำเนินการทั้งหมดให้ปิดการล้มเหลวบางส่วน ตัวอย่างโค้ดนี้ แสดงวิธีดำเนินการนี้ในธุรกรรมแยกต่างหาก

operations = [];
while (searchResults.hasNext()) {
  const row = searchResults.next();
  const conversionGoal = row.customerConversionGoal;

  operations.push({
    "campaignConversionGoalOperation": {
      "update": {
        "resourceName": `customers/${customerId}/campaignConversionGoals/${campaignId}~${conversionGoal.category}~${conversionGoal.origin}`,
        // Insert your logic here to determine whether you want this particular
        // campaign conversion goal to be biddable or not.
        // This code will just default everything to being biddable, but that
        // is not necessarily best for your use case.
        "biddable": true
      },
      "updateMask": "biddable"
    }
  });
}

AdsApp.mutateAll(operations, {partialFailure: false});

การกำหนดเป้าหมายแคมเปญ

สําหรับการกําหนดเป้าหมายแคมเปญใน Performance Max โปรดดูคู่มือ API เพื่อดูรายการประเภทเกณฑ์ที่อนุญาตทั้งหมด

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

คุณสร้างเกณฑ์เหล่านี้พร้อมกับแคมเปญได้โดยเป็นส่วนหนึ่งของ การเรียกไปยัง mutateAll เดียวกัน ตัวอย่างโค้ดนี้ถือว่าคุณจัดโครงสร้างโค้ดในลักษณะดังกล่าว

operations.push({
  "campaignCriterionOperation": {
    "create": {
      "campaign": campaignOperation.campaignOperation.create.resourceName,
      "negative": false,
      "location": {
        // 1023191 represents New York City
        "geoTargetConstant": "geoTargetConstants/1023191"
      }
    }
  }
});

สัญญาณกลุ่มชิ้นงาน

อ่านเกี่ยวกับสัญญาณกลุ่มชิ้นงาน ในเอกสารประกอบ API ก่อนเริ่มต้นใช้งาน โดยจะตั้งค่าได้ด้วยการลิงก์กลุ่มชิ้นงานกับเกณฑ์ AudienceInfo หรือ SearchThemeInfo ที่มีอยู่ หากต้องการใช้กลุ่มเป้าหมายแทน ให้ระบุฟิลด์ audience แทนฟิลด์ searchTheme ด้วยชื่อทรัพยากรของกลุ่มเป้าหมาย

operations.push({
  "assetGroupSignalOperation": {
    "create": {
      "assetGroup": assetGroupOperation.assetGroupOperation.create.resourceName,
      "searchTheme": {
        "text": "mars cruise"
      }
    }
  }
});