業務で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の使い方を理解するまでがくそしんどかったのですが、理解さえできれば後は書くだけなので楽しかったです。
今日はそんな感じです。