쇼핑 캠페인

Google Ads 스크립트를 사용하면 쇼핑 캠페인을 일부 관리할 수 있습니다. 스크립트를 사용하여 기존 쇼핑 캠페인을 사용하고, 제품 그룹 계층 구조를 만들고 관리하며, 쇼핑 보고서를 실행할 수 있습니다. 하지만 스크립트를 사용하여 쇼핑 캠페인을 만들거나, 캠페인 수준에서 쇼핑 속성을 설정 (예: 캠페인 우선순위, 인벤토리 필터 등)하거나, 판매자 센터 계정을 연결할 수는 없습니다.

쇼핑 캠페인 및 광고그룹 검색

쇼핑 캠페인은 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 스크립트를 사용하면 ShoppingAdGroupads() 메서드를 사용하여 제품 광고검색할 수 있습니다. ShoppingAdGroupnewAdBuilder() 메서드를 사용하여 새 제품 광고를 만들 수 있습니다.

제품 그룹 계층구조 반복

ShoppingAdGrouprootProductGroup 메서드를 사용하여 제품 그룹 계층 구조의 루트에 액세스할 수 있습니다. 그런 다음 children 메서드를 사용하여 하위 제품 그룹을 반복하고 제품 그룹 계층 구조를 탐색할 수 있습니다. 각 노드는 ProductGroup 객체이며 getDimension 메서드를 사용하여 제품 그룹의 실제 유형을 파악할 수 있습니다. 상응하는 전송 메서드 (예: asBrand)를 사용하여 더 구체적인 유형 (예: ProductBrand)으로 전송할 수도 있습니다. 다음 코드 스니펫은 제품 그룹 계층 구조를 재귀적으로 탐색하는 방법을 보여줍니다.

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);
  }
}

특정 제품 그룹 선택

AdsApp, ShoppingCampaign 또는 ShoppingAdGroup 인스턴스의 productGroups 메서드를 사용하여 제품 그룹 계층 구조에서 특정 제품 그룹을 선택할 수 있습니다. 이 접근 방식은 입찰 관리 목적으로 특정 제품 그룹을 선택할 때 전체 제품 그룹 계층 구조를 탐색하는 것보다 간단합니다. 다음 코드 스니펫은 지난 한 달 동안 클릭수가 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();

마찬가지로 ProductGroupremove 메서드를 사용하여 하위 집합을 삭제할 수 있습니다. 이렇게 하면 삭제되는 제품 그룹 아래에 있는 전체 제품 그룹 계층구조도 삭제됩니다.

각 제품 그룹을 만든 후에는 제품 그룹 계층 구조가 일관된 상태가 되도록 스크립트가 실행되므로 제품 그룹 계층 구조를 업데이트할 때 '기타'에 해당하는 제품 그룹을 만들거나 삭제할 필요가 없습니다.

'기타' 제품 그룹

쇼핑 제품 그룹 계층 구조에는 제품 그룹 계층 구조에서 만든 맞춤 조건과 일치하지 않는 제품을 처리하기 위해 각 수준에 '기타' ('other') 제품 그룹이 포함됩니다. 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.");
}

리프 제품 그룹을 세분화하면 스크립트가 자동으로 '기타' 제품 그룹을 만들어 제품 그룹 계층 구조가 유효하게 유지되도록 합니다. '기타' 제품 그룹은 상위 제품 그룹의 입찰가를 상속합니다.

새 쇼핑 광고 그룹 만들기

Google Ads 스크립트를 사용하면 ShoppingCampaignnewAdGroupBuilder 메서드를 사용하여 새 쇼핑 광고 그룹을 만들 수 있습니다. ShoppingAdGroup를 만들면 createRootProductGroup 메서드를 사용하여 새 제품 그룹 계층 구조를 만들 수 있습니다.

보고서

Google Ads 스크립트는 쇼핑 캠페인의 실적을 추적하는 데 도움이 되는 product_group_viewshopping_performance_view 보고서를 지원합니다. 신고에 관한 자세한 내용은 신고 가이드를 참고하세요.