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 스크립트를 사용하면 ShoppingAdGroup
의 ads()
메서드를 사용하여 제품 광고를 검색할 수 있습니다.
ShoppingAdGroup
의 newAdBuilder()
메서드를 사용하여 새 제품 광고를 만들 수 있습니다.
제품 그룹 계층구조 반복
ShoppingAdGroup
의 rootProductGroup
메서드를 사용하여 제품 그룹 계층 구조의 루트에 액세스할 수 있습니다.
그런 다음 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();
마찬가지로 ProductGroup
의 remove
메서드를 사용하여 하위 집합을 삭제할 수 있습니다.
이렇게 하면 삭제되는 제품 그룹 아래에 있는 전체 제품 그룹 계층구조도 삭제됩니다.
각 제품 그룹을 만든 후에는 제품 그룹 계층 구조가 일관된 상태가 되도록 스크립트가 실행되므로 제품 그룹 계층 구조를 업데이트할 때 '기타'에 해당하는 제품 그룹을 만들거나 삭제할 필요가 없습니다.
'기타' 제품 그룹
쇼핑 제품 그룹 계층 구조에는 제품 그룹 계층 구조에서 만든 맞춤 조건과 일치하지 않는 제품을 처리하기 위해 각 수준에 '기타' ('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 스크립트를 사용하면 ShoppingCampaign
의 newAdGroupBuilder
메서드를 사용하여 새 쇼핑 광고 그룹을 만들 수 있습니다.
ShoppingAdGroup
를 만들면 createRootProductGroup
메서드를 사용하여 새 제품 그룹 계층 구조를 만들 수 있습니다.
보고서
Google Ads 스크립트는 쇼핑 캠페인의 실적을 추적하는 데 도움이 되는 product_group_view
및 shopping_performance_view
보고서를 지원합니다. 신고에 관한 자세한 내용은 신고 가이드를 참고하세요.