しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

【Ruby】Google AdsenseのAPIでAdmobの広告売上を取得する

■■■ 2021/08/18追記
AdSenseAPIでAdMobデータで取得するのは非推奨になりました。
下URLを参考にAdMobのAPIへの移行をして下さい。

https://developers.google.com/admob/api/v1/migration
■■■

Admobのデータを取得する方法です。

まずはBundlerでgoogle-api-clientをインストールします。

gem 'google-api-client'

次にrefresh_tokenclient_idclient_secretを取得します。
この辺りは下記の記事が詳しいです。

Google API OAuth2.0のアクセストークン&リフレッシュトークン取得手順メモ - Qiita

取得は以下の通りです。
REFRESH_TOKEN、CLIENT_ID、CLIENT_SECRETは先程取得したものを使って下さい。
ACCOUNT_IDはAdmobの管理画面にあるpub-xxxxxxという文字列です。

require 'google/apis/adsense_v1_4'

client = Google::Apis::AdsenseV1_4::AdSenseService.new
client.authorization = Signet::OAuth2::Client.new(
  token_credential_uri: 'https://accounts.google.com/o/oauth2/token',
  refresh_token: REFRESH_TOKEN,
  client_id: CLIENT_ID,
  client_secret: CLIENT_SECRET
)
result = client.generate_account_report(
  ACCOUNT_ID, 'today-1m', 'today',
  dimension: 'DATE', metric: ['PAGE_VIEWS', 'CLICKS', 'EARNINGS']"
).to_h

広告のUNIT_IDでフィルターをかける事も可能です。

result = client.generate_account_report(
  ACCOUNT_ID, 'today-1m', 'today',
  dimension: 'DATE', metric: ['PAGE_VIEWS', 'CLICKS', 'EARNINGS']", filter: "AD_UNIT_CODE==xxxxxxxx").to_h