(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【GoogleAdSenseAPI】収益情報をcurlで取得する

スポンサーリンク

はじめに

過去いくつかGoogleAPIを利用して情報を取得してきました。

今回はGoogleAdSense編になります。

以下のURLにて表示される

https://www.google.com/adsense/new/u/0/<your-id>/payments

以下の画面の

f:id:mtiit:20191008101113p:plain
GoogleAdSenseの収益画面

  • 現時点の収益
  • 前回支払い日
  • 前回支払い収益

curlコマンドで取得したいと思います。
curlコマンドですので、この部分の情報収集を自動化することも可能です。

コマンド実行環境
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"

情報取得の流れ

最終的に発行にコマンドに必要な情報は以下の二つです。

  • アカウントID
  • アクセストークン

それらがあれば以下コマンドで情報取得できます。

curl 'https://www.googleapis.com/adsense/v1.4/accounts/<account-id>/payments' --header 'Authorization: Bearer <access-token>' --header 'Accept: application/json' --compressed
アカウントID

アカウントIDは支払い情報を取得するアカウントで、GoogleAdSenseのコードの中等に記載されている

pub-XXXXXXXXXXXXXXXX

という文字列です。「pub-」部分も含めてアカウントIDです。

ちなみにGoogleAdSenseをブラウザ上で見る時にもURLの中に格納されています。

https://www.google.com/adsense/new/u/0/<この部分>/home
アクセストークン

こちらは面倒です。

まずは以下のようにGoogleAPIを有効化します。Googleアカウントに紐づいている「Google AdSense Management API」です。
f:id:mtiit:20191008102405p:plain

その後、認証情報としてclient_id.jsonというファイルを発行します。このあたりはGoogleAnalyticsと同じで一連の手順です。
f:id:mtiit:20191008102542p:plain

ファイルの中には以下のように情報が格納されています。

{"web":{"client_id":"XX-XX.apps.googleusercontent.com","project_id":"YY","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"ZZ","redirect_uris":["http://localhost"],"javascript_origins":["http://localhost"]}}

上の情報のclient_idを用いて以下のURLをブラウザに打ち込み、認証作業を進めます。

https://accounts.google.com/o/oauth2/auth
?client_id=XX.apps.googleusercontent.com
&scope=https://www.googleapis.com/auth/adsense
&response_type=code
&approval_prompt=force
&access_type=offline

そうすると途中でブラウザ上でエラーとなりますがURLが遷移しているはずです。以下のようなURLの「code」部分の情報を抜き出しておきます。

http://localhost/?code=AA&scope=https://www.googleapis.com/auth/adsense

ここまでくれば以下をcurlコマンドで実行すると

curl -d client_id=XX.apps.googleusercontent.com -d client_secret=ZZ -d redirect_uri=http://localhost -d grant_type=authorization_code -d code=AA https://accounts.google.com/o/oauth2/token

以下の返り値が取得できます。

{
  "access_token": "BB",
  "expires_in": 3600,
  "refresh_token": "CC",
  "scope": "https://www.googleapis.com/auth/adsense",
  "token_type": "Bearer"
}

アクセストークンが取得できました。

実行結果

冒頭に記載した

curl 'https://www.googleapis.com/adsense/v1.4/accounts/<account-id>/payments' --header 'Authorization: Bearer <access-token>' --header 'Accept: application/json' --compressed

を発行すると以下が返り値として帰ってきます。

{
 "kind": "adsense#payments",
 "items": [
  {
   "kind": "adsense#payment",
   "id": "unpaid",
   "paymentAmount": "XX",
   "paymentAmountCurrencyCode": "JPY"
  },
  {
   "kind": "adsense#payment",
   "id": "2019-XX-XX",
   "paymentDate": "2019-XX-XX",
   "paymentAmount": "XX",
   "paymentAmountCurrencyCode": "JPY"
  }
 ]
}

paymentAmountには現在の未払いの収益、paymentDateは前回の支払い日、paymentAmountは前回の支払額です。

冒頭の画面上の情報が取得できました。

終わりに

今回は一番シンプルな収益を取得しました。ここは前日までの収益が表示されるので、リアルタイム性はない箇所ですが、こちらをベースに他の情報の取得を行えば「どのタイミングでよく収益が発生するのか?」といった値の取得も可能になります。

また機会があれば上記についても実装してみたいと思います。

以上、ご参考になれば幸いです。