Facebook ได้จัดให้โฆษณามีโครงสร้างอยู่ 3 ระดับ ได้แก่ แคมเปญ ชุดโฆษณา และโฆษณา โดยใน API นั้น ผู้พัฒนาจะสามารถเข้าถึงโครงสร้างระดับที่ 4 ซึ่งเรียกว่าชิ้นงานโฆษณา
อ็อบเจ็กต์เหล่านี้ประกอบด้วยวัตถุประสงค์ของโฆษณาและชุดโฆษณา 1 ชุดขึ้นไป โครงสร้างระดับนี้ช่วยให้คุณปรับเพิ่มประสิทธิภาพและวัดผลลัพธ์จากวัตถุประสงค์แต่ละรายการของโฆษณาได้
ชุดโฆษณาประกอบด้วยโฆษณา 1 รายการขึ้นไป คุณสามารถตั้งงบประมาณและกำหนดเวลาเผยแพร่ชุดโฆษณาแต่ละชุดได้ โดยให้สร้างชุดโฆษณาสำหรับกลุ่มเป้าหมายแต่ละกลุ่มด้วยราคาประมูลของคุณ โฆษณาในชุดนั้นจะกำหนดเป้าหมายไปยังกลุ่มเป้าหมายที่ใช้ราคาประมูลเท่ากัน โครงสร้างระดับนี้ช่วยควบคุมปริมาณค่าใช้จ่ายสำหรับกลุ่มเป้าหมายแต่ละกลุ่ม กำหนดเวลาที่จะให้กลุ่มเป้าหมายเห็นโฆษณาของคุณ และมอบเกณฑ์ชี้วัดสำหรับกลุ่มเป้าหมายแต่ละกลุ่ม
ประกอบด้วยชิ้นงานโฆษณา ให้คุณสร้างโฆษณาหลายรายการในชุดโฆษณาแต่ละชุดเพื่อปรับประสิทธิภาพในการแสดงโฆษณา โดยอาจใช้รูปภาพ, ลิงก์, วิดีโอ, ข้อความ หรือตำแหน่งการจัดวางที่แตกต่างกันไป
ประกอบด้วยองค์ประกอบภาพของโฆษณา เพียงเท่านั้น และคุณจะไม่สามารถเปลี่ยนแปลงได้เมื่อสร้างขึ้นมาแล้ว บัญชีโฆษณาแต่ละบัญชีจะมีคลังชิ้นงานโฆษณาอยู่ เพื่อจัดเก็บชิ้นงานโฆษณาไว้นำมาใช้ใหม่ในโฆษณาต่างๆ
วัตถุประสงค์ | กำหนดเวลา | งบประมาณ | การประมูล | การกำหนดเป้าหมาย | ชิ้นงานโฆษณา | |
---|---|---|---|---|---|---|
แคมเปญ | ✓ | |||||
ชุดโฆษณา | ✓ | ✓ | ✓ | ✓ | ||
โฆษณา | ✓ |
การแมปชื่ออ็อบเจ็กต์ที่แสดงต่อสาธารณะกับตำแหน่งข้อมูล API เป็นดังนี้
ชื่อที่แสดงต่อสาธารณะ | ตำแหน่งข้อมูล API |
---|---|
แคมเปญ | /campaigns |
ชุดโฆษณา | /adsets |
โฆษณา | /ads |
ชิ้นงานโฆษณา | /adcreatives |
แคมเปญคือโครงสร้างการจัดระเบียบระดับสูงสุดภายในบัญชีโฆษณา และควรมีวัตถุประสงค์เดียวสำหรับผู้ลงโฆษณา ตัวอย่างเช่น เพื่อเพิ่มการมีส่วนร่วมในโพสต์ของเพจ การตั้งค่าวัตถุประสงค์ของแคมเปญส่งผลให้ระบบทำการตรวจสอบความถูกต้องของโฆษณาใดๆ ที่ได้เพิ่มเข้าไปยังแคมเปญนั้น เพื่อให้แน่ใจว่าโฆษณาเหล่านี้ใช้วัตถุประสงค์ที่ถูกต้องเช่นเดียวกัน
ในตัวจัดการโฆษณา เราจะแสดงแคมเปญที่กำลังใช้งานและหยุดชั่วคราวอยู่ภายในบัญชีโฆษณา
หากต้องการอ่านข้อมูลของแคมเปญที่เกี่ยวข้องกับบัญชีใดบัญชีหนึ่ง คุณจะต้องส่งคำขอไปยังจุดเชื่อมต่อของบัญชีโฆษณาที่คุณกำลังใช้อยู่ ตามค่าเริ่มต้นแล้ว เราจะแสดงเฉพาะข้อมูลแคมเปญที่มีสถานะเป็น ACTIVE
หรือ PAUSED
เท่านั้น ดังนั้นคุณต้องระบุสถานะเพิ่มเติมตามความจำเป็น ดังภาพ
curl -X GET \
-d 'effective_status=[
"ACTIVE",
"PAUSED"
]' \
-d 'fields="name,objective"' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/campaigns
นอกจากนี้เรายังแสดงข้อมูลเชิงลึกในภาพรวมบางรายการอีกด้วย ได้แก่ อิมเพรสชั่น การคลิก และยอดใช้จ่าย คุณสามารถเรียกข้อมูลเชิงลึกเหล่านี้ได้โดยการเรียกใช้ตำแหน่งข้อมูลต่อไปนี้ โดยอาจระบุเวลาที่เริ่มต้นและ/หรือเวลาสิ้นสุดด้วยก็ได้
use FacebookAds\Object\Campaign;
$campaign = new Campaign(<CAMPAIGN_ID>);
$insights = $campaign->getInsights(array(
AdsInsightsFields::IMPRESSIONS,
AdsInsightsFields::INLINE_LINK_CLICKS,
AdsInsightsFields::SPEND,
), array(
'end_time' => (new \DateTime('now'))->getTimestamp(),
));
from facebookads.adobjects.campaign import Campaign
from facebookads.adobjects.adsinsights import AdsInsights
import time
fields = [
AdsInsights.Field.impressions,
AdsInsights.Field.inline_link_clicks,
AdsInsights.Field.spend,
]
params = {
'end_time': int(time.time()),
}
campaign = Campaign(<CAMPAIGN_ID>)
insights = campaign.get_insights(fields=fields, params=params)
APINodeList<AdsInsights> adsInsightss = new Campaign(<CAMPAIGN_ID>, context).getInsights()
.setParam("end_time", end_time)
.requestField("impressions")
.requestField("inline_link_clicks")
.requestField("spend")
.execute();
curl -G \
-d 'end_time=1517287567' \
-d 'fields=impressions,inline_link_clicks,spend' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<CAMPAIGN_ID>/insights
วัตถุประสงค์ คือการดำเนินการที่คุณต้องการให้ผู้คนทำเมื่อเห็นโฆษณาของคุณ คุณต้องระบุวัตถุประสงค์ที่เลือกในกระบวนการสร้างแคมเปญ
การกำหนดวัตถุประสงค์อย่างชัดเจนมีประโยชน์ดังนี้
คำสั่ง API ที่สั้นที่สุดที่ต้องใช้ในการสร้างแคมเปญคือคำสั่งนี้
curl -X POST \
-F 'name="My First Campaign"' \
-F 'objective="OUTCOME_ENGAGEMENT"' \
-F 'status="PAUSED"' \
-F 'special_ad_categories=[]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/campaigns
ชุดโฆษณา คือกลุ่มของโฆษณา ใช้สำหรับกำหนดงบประมาณและช่วงเวลาในการเผยแพร่โฆษณา โฆษณาทุกรายการในชุดโฆษณาควรมีการกำหนดเป้าหมาย, งบประมาณ, การเรียกเก็บเงิน, เป้าหมายการปรับให้เหมาะสม และระยะเวลาที่เหมือนกัน
curl -X POST \
-F 'name="My First AdSet"' \
-F 'lifetime_budget=20000' \
-F 'start_time="2024-11-28T07:29:13-0800"' \
-F 'end_time="2024-12-05T07:29:13-0800"' \
-F 'campaign_id="<AD_CAMPAIGN_ID>"' \
-F 'bid_amount=500' \
-F 'billing_event="IMPRESSIONS"' \
-F 'optimization_goal="POST_ENGAGEMENT"' \
-F 'targeting={
"age_min": 20,
"age_max": 24,
"behaviors": [
{
"id": 6002714895372,
"name": "All travelers"
}
],
"genders": [
1
],
"geo_locations": {
"countries": [
"US"
],
"regions": [
{
"key": "4081"
}
],
"cities": [
{
"key": "777934",
"radius": 10,
"distance_unit": "mile"
}
]
},
"interests": [
{
"id": "<INTEREST_ID>",
"name": "<INTEREST_NAME>"
}
],
"life_events": [
{
"id": 6002714398172,
"name": "Newlywed (1 year)"
}
],
"facebook_positions": [
"feed"
],
"publisher_platforms": [
"facebook",
"audience_network"
]
}' \
-F 'status="PAUSED"' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/adsets
คุณสามารถแสดงรายชื่อชุดโฆษณาทั้งหมดภายในแคมเปญได้ด้วยการส่งคำสั่งไปยังเส้นทางต่อไปนี้ พร้อมระบุฟิลด์และสถานะที่ต้องการ
curl -X GET \
-d 'fields="name,start_time,end_time,daily_budget,lifetime_budget"' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/<AD_CAMPAIGN_ID>/adsets
อ็อบเจ็กต์โฆษณาประกอบด้วยข้อมูลทุกอย่างที่จำเป็นต่อการแสดงโฆษณาบน Facebook รวมถึงชิ้นงานโฆษณาด้วย
curl -X POST \
-F 'name="My Ad"' \
-F 'adset_id="<AD_SET_ID>"' \
-F 'creative={
"creative_id": "<CREATIVE_ID>"
}' \
-F 'status="PAUSED"' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/ads
หากต้องการดูตัวอย่างโฆษณา โปรดดูคู่มือของเรา
สุดท้าย หากคุณต้องการแสดงรายชื่อโฆษณาทั้งหมดในชุดโฆษณา ก็สามารถส่งคำสั่งไปยังเส้นทางต่อไปนี้ พร้อมระบุฟิลด์ที่คุณต้องการเรียกข้อมูล
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Values\ArchivableCrudObjectEffectiveStatuses;
use FacebookAds\Object\Fields\AdFields;
$adset = new AdSet(<AD_SET_ID>);
$ads = $adset->getAds(array(
AdFields::NAME,
AdFields::CONFIGURED_STATUS,
AdFields::EFFECTIVE_STATUS,
AdFields::CREATIVE,
), array(
AdFields::EFFECTIVE_STATUS => array(
ArchivableCrudObjectEffectiveStatuses::ACTIVE,
ArchivableCrudObjectEffectiveStatuses::PAUSED,
ArchivableCrudObjectEffectiveStatuses::PENDING_REVIEW,
ArchivableCrudObjectEffectiveStatuses::PREAPPROVED,
),
));
from facebookads.adobjects.adset import AdSet
from facebookads.adobjects.ad import Ad
fields = [
Ad.Field.name,
Ad.Field.configured_status,
Ad.Field.effective_status,
Ad.Field.creative,
]
params = {
Ad.Field.effective_status: [
'ACTIVE',
'PAUSED',
'PENDING_REVIEW',
'PREAPPROVED',
],
}
ad_set = AdSet(<AD_SET_ID>)
ads = ad_set.get_ads(fields=fields, params=params)
APINodeList<Ad> ads = new AdSet(<AD_SET_ID>, context).getAds()
.setEffectiveStatus("[\"ACTIVE\",\"PAUSED\",\"PENDING_REVIEW\",\"PREAPPROVED\"]")
.requestNameField()
.requestConfiguredStatusField()
.requestEffectiveStatusField()
.requestCreativeField()
.execute();
curl -G \
--data-urlencode 'effective_status=[
"ACTIVE",
"PAUSED",
"PENDING_REVIEW",
"PREAPPROVED"
]' \
-d 'fields=name,configured_status,effective_status,creative' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<AD_SET_ID>/ads
คุณอาจพบว่าจำนวนโฆษณาทั้งหมดมีมากเกินจำนวนที่คุณต้องการให้แสดงใน 1 หน้า ในกรณีนี้ คุณควรระบุตัวเลขแสดงจำนวนรายการที่คุณต้องการเรียกข้อมูลในฟิลด์ limit
จากนั้นแบ่งหน้าเพื่อแสดงรายการที่เหลือ
คุณสามารถทำการแบ่งหน้าได้ด้วยการใช้เคอร์เซอร์ที่ส่งกลับมาในการตอบสนอง ดังภาพ
"paging": { "previous" : "https://graph.facebook.com/...", "next": "https://graph.facebook.com/...", "cursors": { "before": "NjAxNjc3NTU1ODMyNw==", "after": "NjAxMTc0NTU2MjcyNw==" }
หากยังมีหน้าอื่นๆ ที่เรียกข้อมูลได้อยู่ การตอบกลับจะมีฟิลด์ previous
และ next
อยู่ด้วย แล้วคุณจะสามารถใช้ URL เหล่านั้นเพื่อเรียกข้อมูลหน้าในหน้าดังกล่าวได้ อ่านเพิ่มเติมเกี่ยวกับการแบ่งหน้าด้วยเคอร์เซอร์