売上予測を
見える化

  • 登録不要
  • 基本無料
  • データ安全
無料で始める

請求書も
かんたん作成

  • テンプレート
  • 自動計算
  • PDF出力
今すぐ試す

📊 売上予測を今すぐ始める

未来の売上が、今わかる。登録不要・基本無料

Monerionを無料で試す →

Google Ads API を使う手順【後編】OAuth認証とPython実装

前編の振り返りと後編の内容

前編では、マネージャーアカウントの準備からDeveloper Token申請までを解説しました。後編では、いよいよ実装フェーズに入ります。

本記事で扱う内容: - OAuth 2.0認証によるRefresh Token取得 - Pythonでの接続確認 - Claude Code/Codex CLIを活用した効率的な実装 - よくあるエラーと対処法

ステップ4:OAuth認証でRefresh Token取得

4-1. なぜRefresh Tokenが必要か

Google Ads APIはサービスアカウント認証に対応していません。必ずユーザー同意ベースのOAuth 2.0を使用し、Refresh Tokenで継続的にアクセスします。

4-2. Refresh Token取得スクリプト

以下のPythonスクリプトで、初回のRefresh Tokenを取得します:

#!/usr/bin/env python3
"""OAuth認証でRefresh Tokenを取得"""

from google_auth_oauthlib.flow import InstalledAppFlow
import os

# 環境変数から認証情報を読み込み
CLIENT_ID = os.environ.get('GOOGLE_ADS_CLIENT_ID')
CLIENT_SECRET = os.environ.get('GOOGLE_ADS_CLIENT_SECRET')

if not CLIENT_ID or not CLIENT_SECRET:
    print("エラー: 環境変数 GOOGLE_ADS_CLIENT_ID と GOOGLE_ADS_CLIENT_SECRET を設定してください")
    exit(1)

# OAuth設定
client_config = {
    "installed": {
        "client_id": CLIENT_ID,
        "client_secret": CLIENT_SECRET,
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
    }
}

# スコープ設定(Google Ads API専用)
SCOPES = ['https://www.googleapis.com/auth/adwords']

# 認証フロー実行
flow = InstalledAppFlow.from_client_config(client_config, SCOPES)
credentials = flow.run_local_server(port=8080)

# Refresh Token表示
print("\n✅ Refresh Token取得成功:")
print(credentials.refresh_token)
print("\n⚠️ このトークンを環境変数 GOOGLE_ADS_REFRESH_TOKEN に保存してください")

4-3. 実行手順

# 必要なパッケージをインストール
pip install google-auth google-auth-oauthlib google-ads

# 環境変数を設定
export GOOGLE_ADS_CLIENT_ID="your-client-id"
export GOOGLE_ADS_CLIENT_SECRET="your-client-secret"

# スクリプト実行
python get_refresh_token.py

ブラウザが自動的に開き、Googleアカウントでの認証を求められます。承認後、ターミナルにRefresh Tokenが表示されます。

ステップ5:Pythonでの接続確認

5-1. 環境変数の準備

.envファイルを作成し、以下の情報を設定:

# .env ファイル
GOOGLE_ADS_DEVELOPER_TOKEN=your-developer-token
GOOGLE_ADS_CLIENT_ID=your-client-id
GOOGLE_ADS_CLIENT_SECRET=your-client-secret
GOOGLE_ADS_REFRESH_TOKEN=your-refresh-token
GOOGLE_ADS_LOGIN_CUSTOMER_ID=1234567890  # 親アカウント(ハイフンなし)
GOOGLE_ADS_CUSTOMER_ID=9876543210        # 子アカウント(ハイフンなし)

5-2. 接続確認スクリプト

#!/usr/bin/env python3
"""Google Ads API接続確認"""

from google.ads.googleads.client import GoogleAdsClient
from dotenv import load_dotenv
import os

# 環境変数読み込み
load_dotenv()

def main():
    # 設定を辞書形式で準備
    config = {
        "developer_token": os.environ["GOOGLE_ADS_DEVELOPER_TOKEN"],
        "client_id": os.environ["GOOGLE_ADS_CLIENT_ID"],
        "client_secret": os.environ["GOOGLE_ADS_CLIENT_SECRET"],
        "refresh_token": os.environ["GOOGLE_ADS_REFRESH_TOKEN"],
        "login_customer_id": os.environ["GOOGLE_ADS_LOGIN_CUSTOMER_ID"],
    }

    # クライアント初期化
    client = GoogleAdsClient.load_from_dict(config)
    customer_id = os.environ["GOOGLE_ADS_CUSTOMER_ID"]

    # Google Ads サービス取得
    ga_service = client.get_service("GoogleAdsService")

    # シンプルなクエリで接続確認
    query = """
        SELECT
            campaign.id,
            campaign.name,
            campaign.status
        FROM campaign
        LIMIT 10
    """

    # クエリ実行
    response = ga_service.search(customer_id=customer_id, query=query)

    # 結果表示
    print("✅ 接続成功!キャンペーン一覧:")
    for row in response:
        print(f"  - {row.campaign.name} (ID: {row.campaign.id})")

if __name__ == "__main__":
    main()

Claude Code/Codex CLIの活用方法

効率的な実装のためのプロンプト例

開発を加速させるため、以下のプロンプトをClaude CodeやCodex CLIに渡します:

Google Ads APIのPythonクライアントを実装してください。

要件:
- 環境変数から認証情報を読み込む
- エラーハンドリングを適切に実装
- キャンペーン一覧を取得する関数
- 日別レポートを取得する関数

制約:
- google-ads公式ライブラリを使用
- IDはハイフンなしで処理
- ログは構造化(JSON形式)

このプロンプトにより、本番環境で使える堅牢なコードが生成されます。

よくあるハマりどころと対処法

エラー1:IDのハイフン問題

# ❌ 間違い
customer_id = "123-456-7890"

# ✅ 正しい
customer_id = "1234567890"

エラー2:スコープ不足

# ❌ 間違い(一般的なGoogleスコープ)
SCOPES = ['https://www.googleapis.com/auth/userinfo.email']

# ✅ 正しい(Google Ads専用)
SCOPES = ['https://www.googleapis.com/auth/adwords']

エラー3:親子アカウントの混同

config = {
    # 親アカウント(マネージャー)
    "login_customer_id": "1234567890",

    # これとは別!
}

# 操作対象(子アカウント)は別途指定
customer_id = "9876543210"

エラー4:Developer Token未承認

承認待ちの場合、以下のエラーが発生します:

DEVELOPER_TOKEN_NOT_APPROVED

対処法: テストアカウントで動作確認するか、承認を待ちます。

セキュリティのベストプラクティス

1. 認証情報の管理

# .gitignoreに必ず追加
.env
*.json  # クライアントシークレットファイル

2. 環境変数の暗号化

本番環境では、AWS Secrets ManagerやGoogle Secret Managerを使用:

# Google Secret Manager例
from google.cloud import secretmanager

def get_secret(secret_id):
    client = secretmanager.SecretManagerServiceClient()
    name = f"projects/{project_id}/secrets/{secret_id}/versions/latest"
    response = client.access_secret_version(request={"name": name})
    return response.payload.data.decode("UTF-8")

実装後のチェックリスト

実装完了後、以下を確認しましょう:

  • [ ] Refresh Tokenを安全に保管している
  • [ ] IDからハイフンを除去している
  • [ ] 親子アカウントを正しく設定している
  • [ ] エラーハンドリングを実装している
  • [ ] ログを適切に記録している
  • [ ] APIの利用制限を考慮している(15,000 operations/day)

まとめ

Google Ads APIの導入は複雑に見えますが、手順を整理すれば着実に進められます。

重要ポイントの再確認

  • サービスアカウント不可:必ずOAuth 2.0を使用
  • ID形式:ハイフンを必ず除去
  • 親子関係:マネージャーと操作対象を明確に分離
  • セキュリティ:認証情報は環境変数で管理

次のステップ

基本的な接続が確認できたら、以下に挑戦してみましょう: - キャンペーンの自動作成・更新 - パフォーマンスレポートの定期取得 - 入札戦略の自動最適化

Google Ads APIを活用することで、広告運用の自動化と効率化が実現できます。本記事を参考に、ぜひ実装にチャレンジしてください。


参考リンク

🎯 今すぐ始める

Monerionで売上予測を始めましょう

登録不要ですぐ使える
データは端末に安全保存
基本機能は永久無料
無料で使ってみる

30秒で始められます

← ブログトップに戻る