最高成效廣告活動

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

這個動作會選取資產的資源名稱做為其專屬 ID。您也可以選取其他欄位 (例如 asset.typeasset.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 方法執行,即可獲得相同的結果。