LoginSignup
2
0

More than 3 years have passed since last update.

facebook-ruby-business-sdkで広告結果データを取得しchartkickでグラフ化

Posted at

実装したいこと

  • facebookページでかけた広告結果データを取得して画面描画したい
  • 広告結果データ取得にはfacebook-ruby-business-sdkを使う
  • グラフ描画にはchartkickを使用する

トークン取得

developer for facebookにアクセスしてアクセストークンを取得します、下記キャプチャから取得できます

WOW_U_―_マーケティングAPI_-_Facebook_for_Developers.png

画面左側メニューの「設定 > ベーシック」から「app secret」も取得できるので、これも控えておきます。

ここで取得したトークンとシークレットをcredentialsに入れておきます。

Railsアプリから呼び出す

トークンを設定できたら呼び出す準備は完了しているので、必要な記述を追加していきます。

taskテーブル

カラム名
name string
ad_id string

dataテーブル

カラム名
impressions integer
country_name string
task_id bigint

task has_many datas

タスクを登録した時に、広告結果を取得してみます。

app/models/task.rb

require 'facebookbusiness'

class Video < ApplicationRecord
  # facebook marketing API
  FacebookAds.configure do |config|
    config.access_token = Rails.application.credentials.dig(:facebook_ads, :access_token)
    config.app_secret = Rails.application.credentials.dig(:facebook_ads, :app_secret)
  end

  # callback
  after_save :fetch_facebook_insights

  def fetch_facebook_insights
    ad = FacebookAds::Ad.get(ad_id)
    insightss = ad.insights(
      fields: 'impressions',
      breakdowns: 'country',
      date_preset: 'this_quarter'
    )
    insightss.all.each do |insight|
      data.create(
        country_name: insight.country,
        impressions: insight.impressions.to_i
      )
    end
  end
end

地味に気を付けたい点としては、

  • impressionsがStringで返ってくるので型変換が必要
  • countryは AUなどの略称で返ってくるので、UIで日本語表示したい場合は対応が必要

2点目については、facebookの国コード一覧などが役に立つかと思います。

chartkickでグラフ化

READMEに沿って進めれば簡単にグラフ化できます。

show.html.erb
<%= bar_chart @task.datas.group(:country_name).sum(:impressions) %>
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0