LoginSignup
1
1

More than 3 years have passed since last update.

【Ruby】twitter-adsの中身を叩き切る

Posted at

業務でtwitter-adsを使ってTwitterの広告配信管理画面のAPIを叩くことがあったのですが、
Ruby初心者過ぎてかなりしんどかったのでメモしておきます。

twitter-adsバージョンは7です。

クライアントを生成する

これを作らないことには始まりません。

require 'twitter-ads'

# initialize the client
client = TwitterAds::Client.new(
  CONSUMER_KEY,
  CONSUMER_SECRET,
  ACCESS_TOKEN,
  ACCESS_TOKEN_SECRET
)

アカウントを取得する

githubのquick startをみると。

# load the advertiser account instance
account = client.accounts('c3won9gy')

とありますが、そこに渡すID?はなんやねん。という話になります。
色々と調べていった結果、

client.accounts.each do |v|
  p v.id
end

こういう感じでやったらそれらしいのが1件でてきたのでそこででてきたIDを渡してあげればいけました。

アカウントが保持しているキャンペーン一覧をだす

上記で取得した、accountを使います。

account.campaigns.each do |v|
  p "====================="
  p v.id
  p v.reasons_not_servable
  p v.servable
  p v.deleted
  p v.created_at
  p v.updated_at
  p v.name
  p v.funding_instrument_id
  p v.end_time
  p v.start_time
  p v.entity_status
  p v.currency
  p v.standard_delivery
  p v.daily_budget_amount_local_micro
  p v.total_budget_amount_local_micro
  p v.to_delete
  p "====================="
end

こうやってやるとズラーっとキャンペーン一覧がでてきます。
(こうやって一個一個pせずに一行で全部の値を出す方法ご存じの方いたら教えて下さい・・・)

※ステータスが「削除済み」となっているキャンペーンについては出力されません。

特定のキャンペーンのみのオブジェクトを作りたい場合は、

campaign = account.campaigns('1m5bbbb')

こういう感じで生成してあげて、(渡すIDは上記のv.idで出てきた値です)

campaign.name

という感じでキャンペーン名が取得できます。

campaign.name = "MADOKA"
campaign.save

ってやればキャンペーン名を変更できたりもします。幸せいっぱいですね。

広告グループを出力する

account.line_items()

こちらもaccountが保持する広告グループを出力するので、accountを使います。

これで広告グループの一覧が取得できます。
※ステータスが、「実行中」、「停止中」、「予約済み」、「おすすめ」のものがでてきます。

テイラードオーディエンス一覧をだす。

これもaccountを使います。

account.tailored_audiences.each do |v|
  p "==========="
  p v.id
  p v.name
  p v.list_type
  p v.audience_size
  p v.audience_type
  p v.metadata
  p v.partner_source
  p v.reasons_not_targetable
  p v.targetable
  p v.targetable_types
  p "==========="
end

ここまででなんとなく取得系の雰囲気はつかめてきました。

ここから更に実践的な使い方を書いていきます。

広告グループに紐付いているテイラードオーディエンスを出す。

広告グループは、

line_item = account.line_items('1abcd')

で取得できます。

で、この取得したline_itemで、

line_item.targeting_criteria.each do |target|
  if target.targeting_type == 'TAILORED_AUDIENCE' then
    p account.tailored_audiences(target.targeting_value).name
  end
end

こんな感じになります。

広告グループに紐付いているテイラードオーディエンスの紐づきを解除する

line_item.targeting_criteria.each do |target|
  if target.targeting_type == 'TAILORED_AUDIENCE' then
    target.delete!
  end
end

特定のテイラードオーディエンスを指定した広告グループに紐付ける

これがかなり手こずったのですが、

tc = TwitterAds::TargetingCriteria.new(account)
tc.line_item_id    = '紐付け対象広告グループのID'
tc.targeting_value = '紐付けたいテイラードオーディエンスID(value)'
tc.targeting_type  = 'TAILORED_AUDIENCE' ここは固定でこれ入れればOK
tc.save

といった感じでした。

以上です

紐付けに関して。
TA(テイラードオーディエンス)を作成してもすぐには「準備完了」ステータスにならないので、
作成後、定期的にそのTAの様子をバッチで見に行って、ステータスが「準備完了」(targetable)になったのを確認して、紐付けっていうロジックを組む必要があります。

このSDKの使い方を理解するまでがくそしんどかったのですが、理解さえできれば後は書くだけなので楽しかったです。

今日はそんな感じです。

1
1
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
1
1