Google Ads 스크립트는 쇼핑 캠페인 관리를 일부 제공합니다. 스크립트를 사용하여 기존 쇼핑 캠페인으로 작업하고, 제품 그룹 계층구조를 만들고 관리하며, 쇼핑 보고서를 실행할 수 있습니다. 하지만 스크립트를 사용하여 쇼핑 캠페인을 만들거나, 캠페인 수준에서 쇼핑 속성 (예: 캠페인 우선순위, 인벤토리 필터 등)을 설정하거나, 판매자 센터 계정을 연결할 수는 없습니다.
쇼핑 캠페인 및 광고그룹 가져오기
쇼핑 캠페인은 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 메서드를 사용하여 제품
그룹의 실제 유형을 파악할 수 있습니다. 해당 캐스팅 메서드 (예:
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);
}
}
특정 제품 그룹 선택
제품 그룹 계층구조에서 특정 제품 그룹을 선택하려면
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 메서드를 사용하여 세분화를 삭제할 수 있습니다. 이렇게 하면 삭제되는 제품 그룹 아래의 전체 제품 그룹 계층구조도 삭제됩니다.
스크립트는 각 제품 그룹을 만든 후 제품 그룹 계층구조가 일관된 상태가 되도록 하므로 제품 그룹 계층구조 구조를 업데이트할 때 '기타'에 해당하는 제품 그룹을 만들거나 삭제할 필요가 없습니다.
'기타' 제품 그룹
쇼핑 제품 그룹 계층구조에는 제품 그룹 계층구조에서 만든 맞춤 조건과 일치하지 않는 제품을 처리하기 위해 각 수준에 '기타' 제품 그룹이 포함되어 있습니다.
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 스크립트를 사용하면 ShoppingCampaign의
newAdGroupBuilder 메서드를 사용하여 새 쇼핑 광고그룹을 만들 수 있습니다.
ShoppingAdGroup을 만든 후에는 createRootProductGroup
메서드를 사용하여 새 제품 그룹 계층구조를 만들 수 있습니다.
보고서
Google Ads 스크립트는 product_group_view 및
shopping_performance_view 보고서를 지원하여
쇼핑 캠페인의 실적을 추적하는 데 도움을 줍니다. 보고서에 대한 자세한 내용은
보고서 가이드를 참고하세요.