Facebook広告で、既存の顧客に情報を発信し、新たな顧客にリーチしましょう。それぞれのガイドでは、広告の目的を達成するために役立つFacebook広告製品について説明します。広告ユニットにはいくつかの種類があり、さまざまなデザイン、配置、クリエイティブのオプションがあります。広告素材コンテンツに広告ユニットを使用する際のガイドラインについては、「Facebook広告ガイド」をご覧ください。
広告クリエイティブとは、広告そのものを視覚的にレンダリングするためのすべてのデータを含んだオブジェクトです。APIでは、こちらのリストに記載されているさまざまな種類の広告をFacebook上に作成できます。
ページ投稿のエンゲージメントを目的に設定したキャンペーンがある場合、そのページが作成した投稿を宣伝する広告を作成できるようになりました。これはページ投稿広告とみなされます。ページ投稿広告には、object_story_id
フィールドが必要です。このフィールドは、ページ投稿のid
プロパティです。詳しくは、広告クリエイティブ、リファレンスをご覧ください。
広告クリエイティブは、次の3つの要素で構成されます。
広告クリエイティブオブジェクトを作成するには、以下の呼び出しを実行します。
API呼び出しには、クリエイティブオブジェクトのid
が返されます。これは広告オブジェクトで必要になるので保存しておきます。
クリエイティブのテキスト、画像サイズ、画像アスペクト比などには制約があります。詳しくは、「広告ガイド」をご覧ください。
広告APIでは、id
以外のフィールドを読み取るにはフィールド名を明示的に指定する必要があります。各オブジェクトのリファレンスには、オブジェクトの読み取りに関するセクションと、読み取り可能なフィールドのリストが掲載されています。クリエイティブの場合、オブジェクトの作成時に指定したものと同じフィールド、およびid
になります。
配置とは、その広告をFacebook上のどこに掲載するかということです(デスクトップのフィード、モバイルデバイスのフィード、右側広告枠など)。広告プロダクトガイドをご覧ください。
使用可能なすべての配置を使って広告を実行することを推奨します。Facebookの広告の入札は、最も少ないコストで最も大きなキャンペーンの成果が得られる可能性が高い配置に広告インプレッションを配信することを目的としています。
この最適化を活用する最も簡単な方法は、このフィールドを空白のままにすることです。広告セットのtarget_specで具体的な配置を選択することもできます。
この例では、ページ投稿広告を使用しています。使用できる配置は、Facebookのモバイルフィード、デスクトップフィード、右側広告枠です。APIの配置オプションをご覧ください。page_type
にdesktopfeed
とrightcolumn
を選択すると、デスクトップフィード配置かつ右側広告枠配置で広告が掲載されます。この広告セットの下に作成される広告には、デスクトップ配置のみを使用できます。
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Targeting;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'Desktop Ad Set',
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::DAILY_BUDGET => 10000,
AdSetFields::TARGETING => (new Targeting())->setData(array(
TargetingFields::PUBLISHER_PLATFORMS => array(
'facebook',
'audience_network',
),
TargetingFields::GEO_LOCATIONS => array(
'countries' => array('BR'),
),
)),
AdSetFields::OPTIMIZATION_GOAL =>
AdSetOptimizationGoalValues::POST_ENGAGEMENT,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::POST_ENGAGEMENT,
AdSetFields::BID_AMOUNT => 1500,
));
$adset->create(array(
AdSet::STATUS_PARAM_NAME => AdSet::STATUS_PAUSED,
));
from facebookads.adobjects.adset import AdSet
from facebookads.adobjects.targeting import Targeting
adset = AdSet(parent_id='act_<AD_ACCOUNT_ID>')
adset[AdSet.Field.name] = 'Desktop Ad Set'
adset[AdSet.Field.campaign_id] = <CAMPAIGN_ID>
adset[AdSet.Field.daily_budget] = 10000
adset[AdSet.Field.targeting] = {
Targeting.Field.publisher_platforms: ['facebook', 'audience_network'],
Targeting.Field.facebook_positions: ['feed'],
Targeting.Field.geo_locations: {
'countries': ['BR'],
},
}
adset[AdSet.Field.optimization_goal] = AdSet.OptimizationGoal.post_engagement
adset[AdSet.Field.billing_event] = AdSet.BillingEvent.post_engagement
adset[AdSet.Field.bid_amount] = 1500
adset.remote_create(params={
'status': AdSet.Status.paused,
})
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
.setName("Desktop Ad Set")
.setCampaignId(<CAMPAIGN_ID>)
.setDailyBudget(10000L)
.setTargeting(
new Targeting()
.setFieldGeoLocations(
new TargetingGeoLocation()
.setFieldCountries(Arrays.asList("BR"))
)
.setFieldPublisherPlatforms(Arrays.asList("facebook", "audience_network"))
)
.setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_POST_ENGAGEMENT)
.setBillingEvent(AdSet.EnumBillingEvent.VALUE_POST_ENGAGEMENT)
.setBidAmount(1500L)
.setStatus(AdSet.EnumStatus.VALUE_PAUSED)
.execute();
String ad_set_id = adSet.getId();
curl \
-F 'name=Desktop Ad Set' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'daily_budget=10000' \
-F 'targeting={
"geo_locations": {"countries":["BR"]},
"publisher_platforms": ["facebook","audience_network"]
}' \
-F 'optimization_goal=POST_ENGAGEMENT' \
-F 'billing_event=POST_ENGAGEMENT' \
-F 'bid_amount=1500' \
-F 'status=PAUSED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets
広告をプレビューする場合は、広告プレビューAPIまたは広告プレビュープラグインのいずれかを使用します。
APIでは、次の3つの方法でプレビューを生成できます。
プレビューAPIのリファレンスドキュメントによると、最低限必要なAPI呼び出しの形式は次のとおりです。
クリエイティブスペックは、広告クリエイティブの作成に必要な各フィールドと値から構成される配列です。
現在、広告クリエイティブの呼び出しは次のようになっています。
次のようにobject_story_id
を取得し、プレビューAPI呼び出しで使用します。
use FacebookAds\Object\AdAccount;
use FacebookAds\Object\Fields\AdPreviewFields;
use FacebookAds\Object\Fields\AdCreativeFields;
$account = new AdAccount('act_<AD_ACCOUNT_ID>');
$account->getGeneratePreviews(array(), array(
AdPreviewFields::CREATIVE => array(
AdCreativeFields::OBJECT_STORY_ID => <POST_ID>,
),
AdPreviewFields::AD_FORMAT => '<FORMAT>',
));
from facebookads.adobjects.adaccount import AdAccount
from facebookads.adobjects.adcreative import AdCreative
account = AdAccount('act_<AD_ACCOUNT_ID>')
params = {
'creative': {
AdCreative.Field.object_story_id: '<POST_ID>',
},
'ad_format': '<FORMAT>',
}
account.get_generate_previews(params=params)
APINodeList<AdPreview> adPreviews = new AdAccount(act_<AD_ACCOUNT_ID>, context).getGeneratePreviews()
.setCreative(
new AdCreative()
.setFieldObjectStoryId(<OBJECT_STORY_ID>)
)
.setAdFormat(<FORMAT>)
.execute();
curl -G \
-d 'creative={"object_story_id":"<POST_ID>"}' \
-d 'ad_format=<FORMAT>' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/generatepreviews
ad_format
に使用できる値は、page_types
とはわずかに異なります。このシナリオでは、デスクトップフィードおよびFacebookの右側広告枠が選択されています。配置ごとにプレビューを作成するため、この場合、2回のAPI呼び出しが必要になります。
use FacebookAds\Object\AdAccount;
use FacebookAds\Object\Fields\AdPreviewFields;
use FacebookAds\Object\Fields\AdCreativeFields;
use FacebookAds\Object\Values\AdPreviewAdFormatValues;
$account = new AdAccount('act_<AD_ACCOUNT_ID>');
$account->getGeneratePreviews(array(), array(
AdPreviewFields::CREATIVE => array(
AdCreativeFields::OBJECT_STORY_ID => <POST_ID>,
),
AdPreviewFields::AD_FORMAT => AdPreviewAdFormatValues::RIGHT_COLUMN_STANDARD,
));
from facebookads.adobjects.adaccount import AdAccount
from facebookads.adobjects.adpreview import AdPreview
from facebookads.adobjects.adcreative import AdCreative
account = AdAccount('act_<AD_ACCOUNT_ID>')
params = {
'creative': {
AdCreative.Field.object_story_id: '<POST_ID>',
},
'ad_format': AdPreview.AdFormat.right_column_standard,
}
account.get_generate_previews(params=params)
APINodeList<AdPreview> adPreviews = new AdAccount(act_<AD_ACCOUNT_ID>, context).getGeneratePreviews()
.setCreative(
new AdCreative()
.setFieldObjectStoryId(<OBJECT_STORY_ID>)
)
.setAdFormat(AdPreview.EnumAdFormat.VALUE_RIGHT_COLUMN_STANDARD)
.execute();
curl -G \
-d 'creative={"object_story_id":"<POST_ID>"}' \
-d 'ad_format=RIGHT_COLUMN_STANDARD' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/generatepreviews
レスポンスの内容は、24時間有効なiFrameです。