Google 広告スクリプトを使用すると、P-MAX キャンペーンを管理できます。スクリプトは、P-MAX キャンペーンの取得、アセット グループの管理、レポートの作成に使用できますが、P-MAX キャンペーンの作成には使用できません。
P-MAX キャンペーンの取得
P-MAX キャンペーンを利用するには、AdsApp
オブジェクトの performanceMaxCampaigns
コレクションを使用します。これらは通常どおり取得できます。
const campaignName = "My Performance Max campaign";
const campaignIterator = AdsApp.performanceMaxCampaigns()
.withCondition(`campaign.name = "${campaignName}"`)
.get();
for (const campaign of campaignIterator) {
...
}
他のキャンペーン タイプとは異なり、P-MAX キャンペーンでは、広告グループや広告オブジェクトは表示されません。他のキャンペーンのこうしたコンセプトに関するものはすべて、設定したアセット グループに基づいて自動的に処理されます。
アセットとアセット グループ
P-MAX キャンペーンの広告は、動画、画像、広告見出し、説明文などのアセット(広告主様が指定したもの、または自動生成されたもの)を使って配信されます。必要なアセットの種類の概要については、Google Ads API P-MAX アセットガイドをご覧ください。
P-MAX キャンペーンのアセットは 1 つのアセット グループにまとめられます。各 P-MAX キャンペーンには少なくとも 1 つのアセット グループが必要です。これらのアセット グループをスクリプトで直接作成することはできませんが、既存のアセット グループからアセットの追加や削除を行うことができます。
アセット グループにアセットを追加
まず、アセットを作成します。
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);
レポート
P-MAX キャンペーンは、他のキャンペーン タイプとともに 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
P-MAX キャンペーンでは広告グループがないため、ad_group
フィールドは選択しないでください。また、asset_group
は分割できません。レポートについて詳しくは、レポートガイドをご覧ください。
アセット グループに関するレポートを直接作成することもできます。具体的な方法については、該当するトピックの Google Ads API ガイドをご覧ください。そこに表示されたクエリを取得し、Google 広告スクリプトの AdsApp.search
メソッドを介して実行すると、同じ結果を得ることができます。