แคมเปญ Shopping

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

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

แคมเปญ Shopping มีให้บริการผ่านการเก็บรวบรวมออบเจ็กต์ AdsApp ใน shoppingCampaigns คุณสามารถเรียกข้อมูลผ่านสคริปต์ได้ตามปกติ

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 ดูข้อมูลเพิ่มเติมเกี่ยวกับการรายงานได้ในคู่มือรายงาน