一度記事にしようとして面倒すぎて諦めたけれど、時が経つと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センターから開発者トークンを作成できるのでそれを控えておきます。
クライアントアカウントの IDを取得
クライアントアカウントの IDを取得する方法です。
MCCテストアカウントを作る
クライアントアカウントの ID (ログインカスタマーID)を取得するためにMCCテストアカウントを作る必要があります。
通常のアカウントでもクライアントアカウントの IDを取得できるようですが審査などがあり面倒なのでここではMCCテストアカウントを使ってAPIの実行などを行う想定です。
アカウントの作成方法については以下でまとめているのでそちらをご確認ください。
クライアントアカウントの IDを取得
テストアカウントのクライアントアカウントの ID(下画像のxxx-xxx-xxxxの部分)を控えておきます。(テストアカウントでは広告配信などできないこともあるとか)
クライアントIDとクライアントシークレットを取得する
クライアントIDとクライアントシークレットはまとめて取得できます。
GCPでプロジェクトを作成する
Google Cloudでプロジェクトがない場合は、Google API Console で「プロジェクトを作成」をクリックしプロジェクトを作成してください。
名前は適当につけて作成しておきます。
Google Ads API を有効化する
プロジェクトを作成したら、検索画面に「Ads API」と打ち込みAds APIを有効化しておきます。
Google Ads APIを有効化したら出てくる「管理」をクリックしておきます。
認証情報を設定しクライアントIDとクライアントシークレットを取得
左側のメニューから認証情報をクリックし現れた画面の上の方にある「+ 認証情報を作成」をクリックし、「OAuthクライアントID」を選択します。
アプリケーションの種類を選択し作成します。複数のMCCアカウントを持っていない場合はデスクトップアプリケーションを選択します。(のちのち動かなかったらこの設定の可能性があるのでその際はGoogleの仕様ご確認ください。)
作成したら、作成した項目の右端にある操作からダウンロードのようなマークをクリックします。
現れた画面にクライアント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(ログインカスタマー)以外はシングルクォーテーションで囲いました。
クライアントアカウントID = login_customer_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で取得できたのですが、参考元と自分の実行コードを紛失したのでメモを残せず。