红宝石 2.6.6
导轨 6.0.4.7
Gem facebookbusiness(Meta官方发布的SDK)
(※如果你用google搜索,gem 'facebook_ads' 等会出现,但请注意不是那个)
API 版本 v14.0(2022 年 8 月最新)
我们公司在网络广告方面投入了很多精力,如果我们把所有业务的facebook广告账户加起来,我们大约有80个账户,包括我们不使用的那些。 (和广告公司一样)
过去,每个账户的负责人每天都要手动将信息输入到谷歌电子表格中,通过链接数据透视表和工作表进行汇总,并目视检查,这使得工作相当复杂。这次的背景是通过点击 facebook api 将其自动化到电子表格的输入。
在本文中,我将解释如何调用 facebook 信息。
如果您还没有,请创建访问令牌和应用程序机密。这里有很多日文文章,所以你不应该有任何麻烦。
有用户,有广告账号,里面有campaign,有ad set等,了解imp,click,cost等PPC广告的基本结构和基本术语。好。
以这些知识为前提,我会告诉你如何真正从facebook的API的概念上来。
了解更多信息官方文件我会留给你,但粗略地说......
节点:对象(接口),例如“用户”或“广告帐户”
任何熟悉 Javascript 的人都会熟悉 DOM 节点的概念。
边缘:连接物体的东西
DB 关系和 JOIN 等概念。比如你想调用一个广告账号中的(多个)campaign,你可以写成AdAccount.campaigns
这样调用,但是这个点下面的部分是边缘。该边可以调用链接到链中对象的对象。
这个 Gem 允许你像对象和方法一样处理上述节点和边,而不是 http 请求⇔响应的形式。
顺便一提,facebook 端的 Gem 自动更新总是命中最新的 API 版本所以,基本上维护只需要更换access_token。
首先准备gem并安装它。
gem 'facebookbusiness'
初始设定
require 'facebookbusiness'
class FacebookAPI
def initialize
# facebook APIの初期設定
FacebookAds.configure do |config|
config.access_token = '<発行したアクセストークン>'
config.app_secret = '<発行したアプリ・シークレット>'
end
end
end
* 在凭证中酌情包括令牌和其他项目。顺便说一句,有“短期”(1-2 小时内到期)和“长期”(2 个月)访问令牌。过去,可以从长期访问令牌发行无限期令牌,但现在似乎不可能。
user = FacebooAd::User.get('me')
#<FacebookAds::User {:id=>"me"}>
这里有两点
1)“我”被视为特殊节点
用户信息通常使用 .get(id) 访问,但通过指定节点“me”,API 端将通过查看请求时附加的访问令牌和应用程序机密自动拉取它。
2) 在这个阶段我还没有点击 API
简单写“get”不会命中API,API会在发送需要获取特定信息的消息的时机命中。
user = FacebooAd::User.get('me')
user.name
# "寺尾 たくみ"
对象持有的信息,例如name
,称为字段。你可以在官方文档中查看这个,如果你查看gem的内容,
module FacebookAds
class User < AdObject
field :about, 'string'
field :age_range, 'AgeRange'
field :birthday, 'string'
field :cover, 'UserCoverPhoto'
field :currency, 'Currency'
field :education, { list: 'object' }
field :email, 'string'
field :favorite_athletes, { list: 'Experience' }
field :favorite_teams, { list: 'Experience' }
field :first_name, 'string'
field :gender, 'string'
field :hometown, 'Page'
field :id, 'string'
...
...
...
end
end
由于它们像这样排列成一排,因此您可以从该列表中搜索您想要的信息。不要害怕git克隆宝石.
此外,由于大多数对象都继承自 AdObject 类,因此您可以使用各种方便的方法。
user = FacebookAds::User.get('me')
user.load! # 今すぐAPIを叩いて自身のインスタンスを書き換える
user
#<FacebookAds::User {:id=>"<自分のアカウントID>"}>
user = FacebookAds::User.get('me',['name', 'id']) # argにほしいフィールドを配列でもたせる
user.load!
user.inspect
#<FacebookAds::User {:id=>"<自分のアカウントID>", :name=>"寺尾 たくみ"}>
user.to_hash
#{:id=>"<自分のアカウントID>", :name=>"寺尾 たくみ"}
不要害怕git克隆宝石.
这次我想要的是与用户关联的所有广告帐户。在此处检查宝石的边缘。
class User < AdObject
### 略 ###
has_edge :accounts do |edge|
edge.get 'Page' do |api|
api.has_param :is_place, 'bool'
api.has_param :is_promotable, 'bool'
end
...
end
### 略 ###
has_edge :adaccounts do |edge|
edge.get 'AdAccount'
end
end
有两个类似帐户的,但上面的一个可能是 Facebook 页面。原来广告账号在底部是adaccounts
。
user = FacebookAds::User.get('me')
user.adaccounts
#<#<Class:0x0000aaaaf8eaea18>:0x0000aaaafa39f210
@name=:adaccounts,
@node=#<FacebookAds::User {:id=>"me"}>,
@options={},
@should_delegate=false>
在这个阶段,它是一个普通对象,其节点(=object)是用户,边名@name 是 adaccounts。
user.adaccounts.all # allですべて取り出す
#[#<FacebookAds::AdAccount {:account_id=>"xxx", :id=>"yyy"}>,
#<FacebookAds::AdAccount {:account_id=>"xxx", :id=>"yyy"}>,
#<FacebookAds::AdAccount {:account_id=>"xxx", :id=>"yyy"}>,
#<FacebookAds::AdAccount {:account_id=>"xxx", :id=>"yyy"}>]
为了查看所有的内容,需要打API,所以取pp的结果是名为AdAccount的对象及其字段(id)如上图。
现在我们有了广告帐户的对象,我们要调用有关帐户执行情况的数据。 (展示次数、点击次数、费用等)
此数据位于另一个名为 AdInsights 的对象的字段中,因此我使用我的广告帐户中的 Edge 连接到 AdInsights。
user.adaccounts.each do |account|
fields = %w[account_id account_name impressions inline_link_clicks spend]
account.insights(fields: fields).each do |insight|
insight.inspect
end
end
#<FacebookAds::AdsInsights {:account_id=>"xx", :account_name=>"なまえ", :impressions=>"1000", :inline_link_clicks=>"100", :spend=>"10000", :date_start=>"2022-07-06", :date_stop=>"2022-08}>
关键是边缘也可以指定为字段。既然已经成功调用了数据,
insight.impressions
# 1000
insight.spend
# 10000
等等,随心所欲地使用它。但是,如果您尝试引用无法获取的值,则 AdObject 具有的#load! 将失败,因此请小心。特别是数值为0就不能取数值,所以如果要取便宜的瓷砖...
insight[:impressions]
# 1000
insight.[:spend]
# 10000
insight[:conversions]
# nil
你可以用这样的符号来调用它。
默认情况下,之前调用的数据调用了一个月的聚合数据。但是,我只想调用昨天的总数并每天管理批次...因此,我们通过添加参数来缩小范围。
请注意,AdInsights 对象负责 API 之间的洞察 API,因此您应该参考该文档参考。
・图形API
・洞察API
・营销API
由于分为三个API,你应该寻找你想要的对象的API并查看参考。
fields = %w[account_id account_name impressions inline_link_clicks spend]
target_date = '2022-08-05'
time_range = { 'since': target_date, 'until': target_date }
account.insights({ fields: fields, time_range: time_range}).each do |insights|
insights.inspect
end
这一次,我们只用 time_range 调用了昨天的数据。如果设置了字段,请将它们插入花括号中。
国内关于facebook的API的资料很少,尤其是取广告账号信息的那个……我希望这篇文章能帮助那些挑战 Facebook 的 API 的人。
原创声明:本文系作者授权九品源码发表,未经许可,不得转载;
原文地址:https://www.19jp.com/show-308623765.html
以上就是[Ruby] 使用 API 获取 Facebook 广告数据的详细内容,更多关于[Ruby] 使用 API 获取 Facebook 广告数据的资料请关注九品源码其它相关文章!