แคมเปญ Shopping

สคริปต์ Google Ads มีไว้สำหรับการจัดการแคมเปญ Shopping บางส่วน คุณสามารถใช้สคริปต์เพื่อทำงานกับแคมเปญ Shopping ที่มีอยู่ สร้างและจัดการลำดับชั้นของกลุ่มผลิตภัณฑ์ และเรียกใช้รายงาน Shopping อย่างไรก็ตาม คุณไม่สามารถใช้สคริปต์เพื่อสร้างแคมเปญ Shopping ตั้งค่าพร็อพเพอร์ตี้ Shopping ที่ระดับแคมเปญ (เช่น ลำดับความสำคัญของแคมเปญ ตัวกรองพื้นที่โฆษณา ฯลฯ) หรือลิงก์บัญชี Merchant Center

การดึงข้อมูลแคมเปญและกลุ่มโฆษณา Shopping

แคมเปญ Shopping มีให้บริการผ่านคอลเล็กชัน shoppingCampaigns ของออบเจ็กต์ AdsApp คุณเรียกข้อมูลเนื้อหาเหล่านี้ตามปกติผ่านสคริปต์ได้โดยทำดังนี้

const campaignName = "My first shopping campaign";

const campaignIterator = AdsApp.shoppingCampaigns()
    .withCondition(`campaign.name = "${campaignName}"`)
    .get();

for (const campaign of campaignIterator) {
  ...
}

เมื่อเรียกข้อมูลแคมเปญแล้ว คุณจะมีกลุ่มโฆษณาของแคมเปญดังกล่าวในลักษณะเดียวกัน วิธีนี้จะมีประโยชน์ก็ต่อเมื่อคุณต้องดำเนินการกับทั้งแคมเปญและกลุ่มโฆษณาของแคมเปญ

const adGroupIterator = campaign.adGroups()
    .withCondition(`ad_group.name = "${adGroupName}"`)
    .get();

for (const adGroup of adGroupIterator) {
    ...
}

หากคุณมีแผนที่จะดำเนินการเฉพาะกับกลุ่มโฆษณาบางกลุ่มเท่านั้น คุณสามารถใช้เมธอด AdsApp.shoppingAdGroups() เพื่อดึงข้อมูลกลุ่มโฆษณาโดยไม่ต้องดึงข้อมูลแคมเปญก่อน โดยทำดังนี้

const adGroupIterator = AdsApp.shoppingAdGroups()
    .withCondition(`campaign.name = "${campaignName}"`)
    .withCondition(`ad_group.name = "${adGroupName}"`)
    .get();

for (const adGroup of adGroupIterator) {
    ...
}

โฆษณาผลิตภัณฑ์

สคริปต์ Google Ads ช่วยให้คุณดึงข้อมูลโฆษณาผลิตภัณฑ์โดยใช้เมธอด ads() ของ ShoppingAdGroup คุณสร้างโฆษณาผลิตภัณฑ์ใหม่โดยใช้วิธีการ newAdBuilder() ของ ShoppingAdGroup ได้

ทำซ้ำตามลำดับชั้นของกลุ่มผลิตภัณฑ์

คุณเข้าถึงรูทของลำดับชั้นกลุ่มผลิตภัณฑ์ได้โดยใช้เมธอด rootProductGroup ของ ShoppingAdGroup จากนั้นคุณจะใช้วิธีการ children เพื่อทำซ้ำกลุ่มผลิตภัณฑ์ย่อยและข้ามผ่านลำดับชั้นของกลุ่มผลิตภัณฑ์ได้ แต่ละโหนดคือออบเจ็กต์ ProductGroup และคุณจะใช้เมธอด getDimension เพื่อค้นหาประเภทจริงของกลุ่มผลิตภัณฑ์ได้ คุณยังแคสต์ไปยังประเภทที่เฉพาะเจาะจงมากขึ้นได้ (เช่น ProductBrand) โดยใช้วิธีแคสต์ที่เกี่ยวข้อง (เช่น asBrand) ข้อมูลโค้ดต่อไปนี้แสดงวิธีข้ามลำดับชั้นของกลุ่มผลิตภัณฑ์แบบวนซ้ำ

walkTree(shoppingAdGroup.rootProductGroup(), 1);

function walkTree(root, level) {
  // Logger.log(root.getDimension());
  let description = "";
  switch (root.getDimension()) {
    case "ROOT":
      description = "Root";
      break;

    case "CATEGORY":
      description = root.asCategory().getName();
      break;

    case "BRAND":
      description = root.asBrand().getName();
      break;

    // Handle more types here.
    ...
  }

  if (root.isOtherCase()) {
    description = "Other";
  }

  const padding = new Array(level + 1).join('-');
  console.log("%s, %s, %s, %s, %s, %s",
             padding,
             description,
             root.getDimension(),
             root.getMaxCpc(),
             root.isOtherCase(),
             root.getId().toFixed());
  const children = root.children().get();
  for (const child of children) {
    walkTree(child, level + 1);
  }
}

เลือกกลุ่มผลิตภัณฑ์ที่เฉพาะเจาะจง

คุณเลือกกลุ่มผลิตภัณฑ์ที่เฉพาะเจาะจงในลำดับชั้นกลุ่มผลิตภัณฑ์ได้โดยใช้เมธอด productGroups ของอินสแตนซ์ AdsApp, ShoppingCampaign หรือ ShoppingAdGroup วิธีนี้ง่ายกว่าการไปยังลำดับชั้นของกลุ่มผลิตภัณฑ์ทั้งหมดเมื่อเลือกกลุ่มผลิตภัณฑ์ที่เฉพาะเจาะจงเพื่อวัตถุประสงค์ด้านการจัดการราคาเสนอ ข้อมูลโค้ดต่อไปนี้แสดงวิธีเลือกกลุ่มผลิตภัณฑ์ทั้งหมดที่มีจำนวนคลิกมากกว่า 5 คลิกและมีอัตราการคลิกผ่านมากกว่า 0.01 ในช่วงเดือนที่ผ่านมา และเพิ่มราคาเสนอของกลุ่มเหล่านั้นขึ้น 0.01

function main() {
  const productGroups = AdsApp.productGroups()
      .withCondition("metrics.clicks > 5")
      .withCondition("metrics.ctr > 0.01")
      .forDateRange("LAST_MONTH")
      .get();
  for (const productGroup of productGroups) {
    productGroup.setMaxCpc(productGroup.getMaxCpc() + 0.01);
  }
}

อัปเดตลำดับชั้นของกลุ่มผลิตภัณฑ์

คุณเพิ่มกลุ่มผลิตภัณฑ์ย่อยลงในกลุ่มผลิตภัณฑ์ที่มีอยู่ได้โดยใช้เมธอด newChild ของกลุ่มดังกล่าว การดำเนินการนี้จะทำให้คุณได้รับออบเจ็กต์ ProductGroupBuilderSpace ซึ่งคุณใช้สร้างกลุ่มผลิตภัณฑ์ที่เหมาะสมได้ ข้อมูลโค้ดต่อไปนี้เพิ่มการแยกย่อยสำหรับแบรนด์ "cardcow" ใต้รูท จากนั้นแบ่งย่อยเพิ่มอีกสำหรับผลิตภัณฑ์ใหม่และผลิตภัณฑ์ที่ได้รับการซ่อมแซมใหม่

const root = shoppingAdGroup.rootProductGroup();

// Add a brand product group for a "cardcow" under root.
const brandProductGroup = root.newChild()
    .brandBuilder()
    .withName("cardcow")
    .withBid(1.2)
    .build()
    .getResult();

// Add new conditions for New and Refurbished cardcow brand items.
const newItems = brandProductGroup.newChild()
    .conditionBuilder()
    .withCondition("New")
    .withBid(1.5)
    .build()
    .getResult();

// Refurbished items will use the bid from "cardcow" product group.
const refurbishedItems = brandProductGroup.newChild()
    .conditionBuilder()
    .withCondition("Refurbished")
    .build()
    .getResult();

ในทำนองเดียวกัน คุณก็นำการแยกย่อยออกได้โดยใช้เมธอด remove ของ ProductGroup การทำเช่นนี้จะลบลำดับชั้นกลุ่มผลิตภัณฑ์ทั้งหมดภายใต้กลุ่มผลิตภัณฑ์ที่กำลังจะนำออกด้วย

สคริปต์จะช่วยให้ลำดับชั้นของกลุ่มผลิตภัณฑ์อยู่ในสถานะที่สอดคล้องกันหลังจากสร้างกลุ่มผลิตภัณฑ์แต่ละกลุ่ม ดังนั้นคุณจึงไม่ต้องสร้างหรือลบกลุ่มผลิตภัณฑ์ที่สอดคล้องกับ "อื่นๆ ที่เหลือ" เมื่ออัปเดตโครงสร้างลำดับชั้นกลุ่มผลิตภัณฑ์

กลุ่มผลิตภัณฑ์ "อื่นๆ ที่เหลือ"

ลำดับชั้นของกลุ่มผลิตภัณฑ์ Shopping มีกลุ่มผลิตภัณฑ์ "อื่นๆ ที่เหลือ" ("อื่นๆ") ในแต่ละระดับเพื่อจัดการผลิตภัณฑ์ที่ไม่ตรงกับเงื่อนไขที่กำหนดเองที่คุณสร้างไว้ในลำดับชั้นกลุ่มผลิตภัณฑ์ คุณสามารถใช้เมธอด isOtherCase เพื่อแยกความแตกต่างระหว่างกลุ่มผลิตภัณฑ์ปกติที่เพิ่มกับกลุ่มผลิตภัณฑ์ "อื่นๆ"

ข้อมูลโค้ดต่อไปนี้จะเรียกกลุ่มผลิตภัณฑ์ "อื่นๆ" ภายใต้ลำดับชั้นกลุ่มผลิตภัณฑ์ระดับรูท และพิมพ์ราคาเสนอของกลุ่มนั้น

const root = shoppingAdGroup.rootProductGroup();

const childProductGroups = root.children().get();
let everythingElseProductGroupFound = false;

for (const childProductGroup of childProductGroups) {
  if (childProductGroup.isOtherCase()) {
    console.log("'Everything else' product group found. Type of the " +
               "product group is %s and bid is %s.",
               childProductGroup.getDimension(),
               childProductGroup.getMaxCpc());
    everythingElseProductGroupFound = true;
    break;
  }
}
if (!everythingElseProductGroupFound) {
  console.log("No 'Everything else' product group found under root " +
             "product group.");
}

เมื่อคุณแยกย่อยกลุ่มผลิตภัณฑ์ใบไม้ สคริปต์จะสร้างกลุ่มผลิตภัณฑ์ "อื่นๆ" โดยอัตโนมัติเพื่อให้แน่ใจว่าลำดับชั้นของกลุ่มผลิตภัณฑ์ยังคงถูกต้อง กลุ่มผลิตภัณฑ์ "อื่นๆ" จะรับค่าราคาเสนอมาจากกลุ่มผลิตภัณฑ์หลัก

สร้างกลุ่มโฆษณา Shopping ใหม่

สคริปต์ Google Ads ช่วยให้คุณสร้างกลุ่มโฆษณา Shopping ใหม่โดยใช้วิธีการ newAdGroupBuilder ของ ShoppingCampaign เมื่อสร้าง ShoppingAdGroup แล้ว คุณจะใช้เมธอด createRootProductGroup เพื่อสร้างลำดับชั้นกลุ่มผลิตภัณฑ์ใหม่ได้

รายงาน

สคริปต์ Google Ads รองรับรายงาน product_group_view และ shopping_performance_view เพื่อช่วยคุณติดตามประสิทธิภาพของแคมเปญ Shopping ดูข้อมูลเพิ่มเติมเกี่ยวกับการรายงานได้ในคู่มือรายงาน