Google

Google Ads APIをPythonで実行できるようにするまでの準備!Python初心者の勉強

python ロゴ

一度記事にしようとして面倒すぎて諦めたけれど、時が経つとPythonを実行できなくなり、再び環境構築する必要があったため手順を備忘録として残します。

Googleが手順を用意してくれておりますが、私には難しいので試行錯誤した結果を残します。

Google Adsのページ:https://developers.google.com/google-ads/api/docs/first-call/overview

またこちらのサイトも参考にさせていただきました。

【Google Ads API】Google APIからキーワードアイデア取得【Python】| enjoyall

ちなみにGoogle Ads APIは無料で使えます。(使い込むと無料の枠を超えることもあるかも)

Python3.7以上の環境が推奨とされています。

必要な情報を取得してくる

以下が必要な情報です。

  • クライアントアカウントの ID
  • 開発者トークン
  • クライアントID
  • クライアントシークレット
  • リフレッシュトークン

上記の情報を元にyamlファイルを作りAds APIを実行するのが目標です。

開発者トークンを取得する方法

開発者トークンを取得する手順です。

Google広告のアカウント作成

まだ持っていない場合はGoogle広告のアカウントを作成します。Googleのアカウントを持っていれば簡単に作れます。

作成ページ:https://ads.google.com/um/StartNow?sourceid=awo&subid=ww-ww-et-awhc-6366720

MCCアカウントを作る

MCCアカウントは、複数のGoogle 広告のアカウントを簡単に管理するためのツールだそうでGoogle 広告(Ads)を使う際に必要なアカウントです。(APIを使いたいだけなのでそこまで深く調べていません。すみません。)

MCCアカウントを持っていない場合はGoogle 広告のページから作成できます。

開発者トークンを取得する

開発者トークンはMCCアカウント(テストアカウントじゃない)から取得可能です。

「ツールと設定」→「APIセンター」をクリック。

API center

APIセンターから開発者トークンを作成できるのでそれを控えておきます。

クライアントアカウントの IDを取得

クライアントアカウントの IDを取得する方法です。

MCCテストアカウントを作る

クライアントアカウントの ID (ログインカスタマーID)を取得するためにMCCテストアカウントを作る必要があります。

通常のアカウントでもクライアントアカウントの IDを取得できるようですが審査などがあり面倒なのでここではMCCテストアカウントを使ってAPIの実行などを行う想定です。

アカウントの作成方法については以下でまとめているのでそちらをご確認ください。

クライアントアカウントの IDを取得

テストアカウントのクライアントアカウントの ID(下画像のxxx-xxx-xxxxの部分)を控えておきます。(テストアカウントでは広告配信などできないこともあるとか)

google ads test account

クライアントIDとクライアントシークレットを取得する

クライアントIDとクライアントシークレットはまとめて取得できます。

GCPでプロジェクトを作成する

Google Cloudでプロジェクトがない場合は、Google API Console で「プロジェクトを作成」をクリックしプロジェクトを作成してください。

create project

名前は適当につけて作成しておきます。

プロジェクトを作成したら、検索画面に「Ads API」と打ち込みAds APIを有効化しておきます。

Google Ads APIを有効化したら出てくる「管理」をクリックしておきます。

enable api

認証情報を設定しクライアントIDとクライアントシークレットを取得

左側のメニューから認証情報をクリックし現れた画面の上の方にある「+ 認証情報を作成」をクリックし、「OAuthクライアントID」を選択します。

client api

アプリケーションの種類を選択し作成します。複数のMCCアカウントを持っていない場合はデスクトップアプリケーションを選択します。(のちのち動かなかったらこの設定の可能性があるのでその際はGoogleの仕様ご確認ください。)

client id

作成したら、作成した項目の右端にある操作からダウンロードのようなマークをクリックします。

OAuth download

現れた画面にクライアントIDとクライアントシークレットが表示されているはずです。またJSONもダウンロードしておきます。(JSONのなかにもクライアントIDとクライアントシークレットが記載されています)

リフレッシュトークンを取得

これが一番はまりましたが、手順を見ていきます。

クライアント ライブラリを設定する

ローカル環境で以下をインストールしておく。

pip install google-ads

ターミナルで、generate_user_credentials.pyを実行します。

python3 generate_user_credentials.py –client_secrets_path=/client_secret_xxx.apps.googleusercontent.com.json

client_secrets_pathの箇所はパスは相対パスだと上手くいかなかったので、絶対パスで実施したほうがよさそうです。

実行後以下のコードが表示されるのでPaste URLのURLをブラウザで貼り付けて実行します。

Paste this URL into your browser: 
https://accounts.google.com/o/oauth2/auth?response_type=code&xxxxxx&access_type=offline&prompt=consent&include_granted_scopes=true

Waiting for authorization and callback to: http://127.0.0.1:8080

(私はよく文章を読まずに http://127.0.0.1:8080へアクセスし続けて上手くいかないなと時間を食い潰しました)

実行すると、以下が返ってきます。

Your refresh token is: 1//xxxxxxxxxxxxxxfffffffffccccccccccccddddddddd

Add your refresh token to your client library configuration as described here: https://developers.google.com/google-ads/api/docs/client-libs/python/configuration

これでリフレッシュトークンも取得できたので、控えておきます。

yamlファイルを作る

yamlファイルをダウンロードし、ファイル内の必要な箇所を埋めます。

  • クライアントアカウントID = login_customer_id
  • 開発者トークン = developer_token
  • クライアントID = client_id
  • クライアントシークレット = client_secret
  • リフレッシュトークン = refresh_token

既に取得しているので埋めていくだけです。クライアントアカウントID(ログインカスタマー)以外はシングルクォーテーションで囲いました。

yamlファイル内にある「use_proto_plus」はProtobufメッセージをくれるとかなので、trueにしておきました。

動作確認

動作確認はyamlファイルなどを取得したGitに上がっているデータでおこなえます。YAMLファイルはホームディレクトリに設置します。ホームディレクトリがわからない場合は以下で確認可能です。

import os
print(os.environ[‘HOME’])

Gitの中にはデータが古いものもあって動かなかったり、自分の環境にデータがないと上手く返ってこなかったりするのでお気をつけください。

python3 xxx.py -c CUSTOMER_ID

おわり

調べた限りではリフレッシュトークンでGASで取得する方法もありましたが、一度リフレッシュトークンをGASで取得できたのですが、参考元と自分の実行コードを紛失したのでメモを残せず。

COMMENT

メールアドレスが公開されることはありません。