실적 최대화 캠페인

Google Ads 스크립트를 사용하면 실적 최대화 캠페인을 일부 관리할 수 있습니다. 스크립트를 사용하여 실적 최대화 캠페인을 검색하고, 애셋 그룹을 관리하고, 보고서를 실행할 수 있습니다. 하지만 스크립트를 사용하여 실적 최대화 캠페인을 만들 수는 없습니다.

실적 최대화 캠페인 검색

실적 최대화 캠페인은 AdsApp 객체의 performanceMaxCampaigns 컬렉션을 통해 사용할 수 있습니다. 평소와 같이 검색할 수 있습니다.

const campaignName = "My Performance Max campaign";

const campaignIterator = AdsApp.performanceMaxCampaigns()
    .withCondition(`campaign.name = "${campaignName}"`)
    .get();

for (const campaign of campaignIterator) {
  ...
}

일부 캠페인 유형과 달리 실적 최대화 캠페인에는 볼 수 있는 광고그룹이나 광고 객체가 없습니다. 다른 캠페인의 이러한 개념과 관련된 모든 내용은 설정된 애셋 그룹을 기준으로 자동으로 처리됩니다.

애셋 및 애셋 그룹

실적 최대화 캠페인의 광고는 광고주가 제공하거나 자동으로 생성된 동영상, 이미지, 광고 제목, 설명 등의 확장 소재를 바탕으로 게재됩니다. 필요한 애셋 유형에 대한 전체 개요는 Google Ads API 실적 최대화 캠페인 애셋 가이드를 참고하세요.

실적 최대화 캠페인의 애셋은 애셋 그룹으로 결합되며, 각 실적 최대화 캠페인에는 애셋 그룹이 하나 이상 있어야 합니다. 스크립트에서 이러한 애셋 그룹을 직접 만들 수는 없지만 기존 애셋 그룹에서 애셋을 추가하고 삭제할 수는 있습니다.

애셋 그룹에 애셋 추가

먼저 확장 소재를 만듭니다.

const imageUrl = "http://www.example.com/example.png";
const imageBlob = UrlFetchApp.fetch(imageUrl).getBlob();
const assetOperation = AdsApp.adAssets().newImageAssetBuilder()
   .withName("new asset name")
   .withData(imageBlob)
   .build();
const imageAsset = assetOperation.getResult();

그런 다음 방금 만든 확장 소재를 사용하여 기존 애셋 그룹에 추가합니다.

// First, fetch the Performance Max campaign we want to operate on.
const campaignIterator = AdsApp.performanceMaxCampaigns()
   .withCondition(`campaign.name = '${campaignName}'`)
   .get();
let campaign;
if (campaignIterator.hasNext()) {
   campaign = campaignIterator.next();
} else {
   throw `No campaign found with name ${campaignName}.`
}

// Then, get that campaign's asset groups.
const assetGroupIterator = campaign.assetGroups().get();

// The campaign must have at least one asset group, so we can just assume so here.
const assetGroup = assetGroupIterator.next();

// Add the asset from the previous step.
assetGroup.addAsset(imageAsset, 'MARKETING_IMAGE');

마지막 단계에서 애셋 유형을 지정해야 한다는 점에 유의하세요. 애셋 유형의 전체 목록은 Google Ads API 문서에서 확인할 수 있습니다.

기존 저작물을 사용하려면 먼저 저작물 선택기를 만듭니다.

const assetSelector = AdsApp.adAssets().assets();

그런 다음 withCondition 필터를 사용하여 작업할 애셋으로 범위를 좁힙니다. 필터 옵션의 전체 목록은 AssetSelector 참조 문서를 확인하세요.

마지막으로 반복자를 가져오고 다른 항목과 마찬가지로 반복합니다.

const assetIterator = assetSelector.get();

for (const asset of assetIterator) {
   ...
}

텍스트 애셋

텍스트 애셋은 약간 다르게 작동합니다. 즉, 애셋을 미리 만들 필요가 없습니다. 애셋 대신 텍스트를 지정하기만 하면 시스템에서 자동으로 애셋을 만듭니다. 텍스트가 기존 텍스트 애셋과 완전히 중복되면 기존 애셋이 대신 재사용됩니다.

예를 들어 광고 제목 확장 소재를 만드는 방법은 다음과 같습니다.

assetGroup.addAsset('asset text here', 'HEADLINE');

애셋 그룹에서 애셋 삭제

애셋 그룹에서 애셋을 삭제할 수도 있습니다. 하지만 캠페인이 유효하려면 특정 유형의 애셋이 최소한 있어야 합니다.

이전 예에서 추가한 애셋을 삭제하는 방법은 다음과 같습니다.

assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');

search 함수를 사용하여 특정 애셋 그룹의 애셋 목록을 가져올 수도 있습니다.

// The resource name is a unique identifier for this asset group.
const assetGroupName = assetGroup.getResourceName();
results = AdsApp.search(
   `SELECT asset.resource_name, asset_group_asset.field_type
    FROM asset_group_asset
    WHERE asset_group.resource_name = '${assetGroupName}'`
);

이렇게 하면 애셋의 리소스 이름이 고유 식별자로 선택됩니다. asset.type 또는 asset.text_asset.text와 같은 다른 필드를 선택하여 결과를 더 세분화할 수도 있습니다. 이 보고서 유형에 대한 쿼리 빌더를 사용하여 자체 쿼리를 작성합니다.

타겟 애셋이 있으면 애셋 그룹에서 remove를 호출하여 애셋 그룹에서 애셋을 삭제합니다.

// Let's assume at least one asset is returned. We'll just remove the first
// asset, whatever it is. In your code, customize this to choose the right asset.
const row_info = results.next().asset;
assetGroup.remove(row_info.asset.resource_name, row_info.asset_group_asset.field_type);

보고서

실적 최대화 캠페인은 다른 캠페인 유형과 함께 campaign 리소스에 보고됩니다. 먼저 다음과 같이 시작할 수 있습니다.

SELECT
  campaign.id,
  campaign.url_expansion_opt_out,
  campaign.status,
  campaign.bidding_strategy_type,
  metrics.clicks,
  metrics.cost_micros,
  metrics.impressions,
  metrics.conversions,
  metrics.all_conversions
FROM campaign
WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX'
  AND metrics.clicks > 0

실적 최대화 캠페인에는 광고 그룹이 없으므로 아무 것도 반환되지 않으므로 ad_group 필드를 선택하지 마세요. 또한 asset_group은(는) 분류할 수 없습니다. 보고서 가이드에서 보고에 대해 자세히 알아보세요.

애셋 그룹에 대해 직접 보고할 수도 있습니다. 이 목표를 달성하는 방법에 관한 자세한 내용은 이 주제에 관한 Google Ads API 가이드를 참고하세요. 표시된 쿼리를 가져와 Google Ads 스크립트의 AdsApp.search 메서드를 통해 실행하여 동일한 결과를 얻을 수 있습니다.