Google AdSense Management APIを試す

クラウド

久々に家のインフラをいじる時間ができたのでAdSenseの収益を自宅のGrafanaで表示させてみました。
そもそもGoogle AdSenseにAPIがあるなんて知らなかったのでメモとして残します。

AdSense Management API

AdSense Management API  |  Google for Developers
AdSense 収益に関するレポートの取得や AdSense 広告枠の管理を可能にする API。

AdSense Management APIはAdSenseの収益に関するレポート取得などを行えるAPI。
Google AdSenseのページを開いてレポートを見ることができると思いますが、あれをAPIで取得が可能です。

値さえ取れてしまえば家のInfluxdbに入れてGrafanaで表示できるので試してみます。

Google Cloudでの設定

まずはAdSense Management APIを有効にする必要があります。
APIを利用できるようにするまでいくつか設定が必要なようです。

AdSenseを利用しているアカウントでGoogle CloudのConsoleを開く
https://console.cloud.google.com/

Projectの作成
普段利用しているProjectがない場合は新規で作成します。
画面左上のプロジェクト選択画面の “新しいプロジェクト” より作成します。
Project: AdSense Project
場所: 組織なし

APIライブラリの有効化
上の検索バーで”ライブラリ”と検索してAPIとサービスの一覧を表示します。
AdSense Management APIを探して有効にするを押します。
有効になったら管理を押してAPIとサービスの詳細画面に遷移します。

OAuth 同意画面
認証するに当たりOAuthの設定が必要です。 “OAuth 同意画面”をクリックします。
下記のような画面になるので設定していきます。
User Type > 外部
アプリ名: AdSense Project (自由)
ユーザー サポートメール: Gmail (自由)
デベロッパーの連絡先: Gmail (自由)

スコープ
追加から、…/auth/adsense.readonly を選択

テストユーザー
ADD USERSより自分のGmailを入力

認証情報
左の認証情報を開き、認証情報を作成をクリック
OAuth クライアント ID の作成を選択
アプリケーションの種類: ウェブ アプリケーション
名前: Web App (自由)
承認済みのリダイレクト URI: http://localhost:8080/

以上でGoogle Cloudで必要な設定は完了

テストスクリプトの実行

Git上に公式のサンプルコードがあるためこれを活用する。

GitHub - googleads/googleads-adsense-examples: Samples for the AdSense Management API
Samples for the AdSense Management API. Contribute to googleads/googleads-adsense-examples development by creating an ac...
https://github.com/googleads/googleads-adsense-examples/tree/main/v2/python

スクリプトを動かすHostでまずは必要なパッケージのインストールを行う。

pip Install

pip install google-api-python-client
pip install google_auth_oauthlib

adsense.datの作成
Gitでサンプルコードのあった階層に移動する。
https://github.com/googleads/googleads-adsense-examples/tree/main/v2/python

python adsense_util.py

実行すると、URLが表示されるためブラウザでアクセスする。
AdSenseを利用しているGoogleUserでLoginをして許可をしてあげる。

ScriptはWebサーバを8080で建ててCallbackURLに指定している。
Remote Hostで実行している場合はPort Forwarding等を利用して、
http://localhost:8080 でブラウザアクセスできるようにする。

問題なく実行ができれば、同じ階層に “adsense.dat”が生成されている。
これがあるとこれ以降はこのファイルを認証に利用するため再度OAuth2.0による認証が不要になる。

テスト実行

python generate_report.py

問題なければ、2021-03-01 ~ 2021-03-31 のデータが表示される。
毎日のデータを取得したいのでスクリプトを修正してあげる。

プログラム改造
推定収益とViewだけ取りたかったので下記のように変更。
また、前日のデータを取得するようにした。これをInfluxdbに日次で実行するようにした。

def main():
  # Authenticate and construct service.
  credentials = adsense_util.get_adsense_credentials()
  with discovery.build('adsense', 'v2', credentials = credentials) as service:
    try:
      # Let the user pick account if more than one.
      account_id = adsense_util.get_account_id(service)
      today = datetime.datetime.today()
      yesterday = today + relativedelta(days=-1)
      startDateYear = yesterday.year
      startDateMonth = yesterday.month
      startDateDay = yesterday.day
      endDateYear = yesterday.year
      endDateMonth = yesterday.month
      endDateDay = yesterday.day
      result = service.accounts().reports().generate(
          account=account_id, dateRange='CUSTOM',
          startDate_year=startDateYear, startDate_month=startDateMonth, startDate_day=startDateDay,
          endDate_year=endDateYear, endDate_month=endDateMonth, endDate_day=endDateDay,
          metrics=['ESTIMATED_EARNINGS','PAGE_VIEWS']).execute()

      estimated_earnings = result["totals"]["cells"][0]["value"]
      page_views = result["totals"]["cells"][1]["value"]
      print(result)
      return estimated_earnings, page_views

Grafanaで見えるようになった

Influxdbに送り付けたので推定収益が見えるようになりました!
このブログは月に300円くらいの利益(2024/02/18時点)がでています
AWS維持費(S3やECRを含む)で月額2000円位かかってるので赤字ですorz

以上

タイトルとURLをコピーしました