쇼핑 캠페인

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 객체가 제공되며 이를 사용하여 적절한 제품 그룹을 만들 수 있습니다. 다음 코드 스니펫은 루트 아래에 '카드카우' 브랜드의 하위 그룹을 추가한 후 새 제품 및 리퍼 제품으로 세분화합니다.

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 메서드를 사용하여 하위 부문을 삭제할 수 있습니다. 이렇게 하면 삭제되는 제품 그룹 아래의 전체 제품 그룹 계층 구조도 삭제됩니다.

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

'기타' 제품 그룹

쇼핑 제품 그룹 계층 구조에는 제품 그룹 계층 구조에서 만든 커스텀 조건과 일치하지 않는 제품을 처리하기 위해 각 수준에 '기타' ('기타') 제품 그룹이 포함됩니다. 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 보고서를 지원하므로 쇼핑 캠페인의 실적을 추적하는 데 도움이 됩니다. 보고에 대한 자세한 내용은 보고서 가이드를 참고하세요.