(引用元:Google アド マネージャー – 統合型の広告管理プラットフォーム https://admanager.google.com/intl/ja/home/)
こんにちは、フロント周りを担当しているGMOアドマーケティングのY.A.です。
昨今媒体においてPrebid.jsなどHeaderBiddingの導入に伴い、自前でGoogle AdManager(以降「GAM」)の申込情報作成を自動化したいという場面が増えていると思います。
(Prebid.jsの概略図。多くの場合、大量の広告申込情報を作らないといけない。 ※上記画像は当社が作成したもの)
今回はそれを実現できるGoogle AdManager APIについて、セットアップからNetwork名取得までのサンプルを通して説明したいと思います。
基本的には GAM APIのGet Startedのページ の内容に沿ってるのですが、少し情報が散らばっていたり、いくつかつまづきやすいポイントがあると思うので、それら補足しながら説明します。
準備
(1) サービスアカウントの作成
GAM APIのリクエストはOAuth2でもって認証しなければなりません。
やり方としては、「Service Account Flow」と、「Insalled Application Flow または Web Application Flow」の2つがありますが、今回は「Service Account Flow」に沿って進めたいと思います。
まず「Google API Console」で「サービスアカウント」にて認証情報を作ります。
https://console.developers.google.com/apis/credentials?hl=ja
作成方法の詳細は割愛しますが、ここでサービスアカウントを作成し、「キーを作成」にてJSONファイルを取得します。
(2) APIの有効化
該当のGAMのネットワークにて、
「管理者」 > 「全般設定」 で 「APIアクセス」を有効にします。
さらに同設定にて「サービスアカウントユーザーを追加」というボタンがあるので、そこからユーザーとして先のサービスアカウントの名前、メールアドレスを設定、役割を「管理者」とします。
メールアドレスは、サービスアカウント作成時に発行されたメールアドレスです。
役割の説明についてはこちらを参照ください。(「組み込みのユーザー役割のリスト」)
環境セットアップ
PHPでのやり方です。composerを使って環境をセットアップします。
1 |
composer require googleads/googleads-php-lib |
次にadsapi_php.iniをコピーし、ホームディレクトリへ設置します。
1 |
curl https://raw.githubusercontent.com/googleads/googleads-php-lib/master/examples/AdManager/adsapi_php.ini -o ~/adsapi_php.ini |
adsapi_php.iniに次の設定を行います。それぞれの箇所をコメントにある内容で埋めます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[AD_MANAGER] ; GAMのネットワークコード networkCode = "" ; 任意のアプリケーション名 applicationName = "" [OAUTH2] ; サービスアカウント作成時に作成したキーのJSONファイルのパス jsonKeyFilePath = "" ; スコープ(この設定のままでOK) scopes = "https://www.googleapis.com/auth/dfp" |
なおホームディレクトリにadsapi_php.iniを設置しましたが各classの「fromFile」メソッドの引数にて任意のパスを指定することもできます。
参考までに 「ConfigurationLoader」 の「fromFile」の場合です。
https://github.com/googleads/googleads-php-lib/blob/master/src/Google/AdsApi/Common/ConfigurationLoader.php#L57
GAMのネットワーク名を取得
「getNetworkName.php」を作ります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?php require 'vendor/autoload.php'; use Google\AdsApi\AdManager\AdManagerSession; use Google\AdsApi\AdManager\AdManagerSessionBuilder; use Google\AdsApi\AdManager\v202005\ApiException; use Google\AdsApi\AdManager\v202005\ServiceFactory; use Google\AdsApi\Common\OAuth2TokenBuilder; // Generate a refreshable OAuth2 credential for authentication. $oAuth2Credential = (new OAuth2TokenBuilder()) ->fromFile() ->build(); // Construct an API session configured from a properties file and the OAuth2 // credentials above. $session = (new AdManagerSessionBuilder()) ->fromFile() ->withOAuth2Credential($oAuth2Credential) ->build(); // Get a service. $serviceFactory = new ServiceFactory(); $networkService = $serviceFactory->createNetworkService($session); // Make a request $network = $networkService->getCurrentNetwork(); printf( "Network with code %d and display name '%s' was found.\n", $network->getNetworkCode(), $network->getDisplayName() ); |
via. https://developers.google.com/ad-manager/api/start?hl=ja
コマンドラインで実行します。
1 |
php getNetworkName.php |
実行すると次のような実行結果が得られます。
1 2 |
[2020-05-25T15:45:29.853320+00:00] DFP_SOAP.INFO: networkCode=XXXXXXX service=NetworkService method=getCurrentNetwork responseTime=623 requestId=abcdefghijilmnopqrstuvwxyz123456789 server=ads.google.com isFault=0 faultMessage= Network with code XXXXXXX and display name 'YYYYYYY' was found. |
「XXXXXXX」には「ネットワークID」「YYYYYYY」には「ネットワーク名」が表示されます。
まとめ
簡単に環境設定からネットワーク名の取得までを行いました。
当然ネットワーク名取得だけでなく、GAM APIを使用すれば、冒頭にあげた通り広告申込情報の作成などもできます。
それらの設定方法についてはPHPであれば次のGithubリポジトリのexamplesディレクトリ内で設定例を確認できます。
https://github.com/googleads/googleads-php-lib/tree/master/examples/AdManager/v202005
例えば広告申込情報作成についてはこちら。
https://github.com/googleads/googleads-php-lib/blob/master/examples/AdManager/v202005/LineItemService/CreateLineItems.php
広告申込情報にクリエイティブを紐づける設定例の参考はこちらです。
https://github.com/googleads/googleads-php-lib/blob/master/examples/AdManager/v202005/LineItemCreativeAssociationService/CreateLicas.php
今回「composer require」で開発環境をセットしたためexmaplesディレクトリはありませんでしたが、リポジトリをcloneすればexamplesディレクトリも取得できるので、開発時においてはどこかにcloneしておくとエディタで手軽に参照等でき、開発も楽になるかと思います。
https://github.com/googleads/googleads-php-lib#downloading-this-library
最後注意点としてGAM APIには「Deprecation Schedule」があります。
約3ヶ月ごとに新しくAPIバージョンリリースされており、その時の最新バージョンであっても9ヶ月後には「Deprecation」で非推奨 となり、約1年後にはバージョンは「Sunset」となるとそのバージョンが利用できなくなります。
これら通知を受け取るには「Google Ad Manager API Sunset Announcements group」に参加するか、あるいは使用GAMネットワークの通知にて、「サポート終了となったAPIが使用されています」にチェックが入っていれば通知されるようですので、なにかしら通知の設定をしておくことが重要です。
比較的媒体目線でのGoogle AdManagerの情報は目にしますが、開発者向けのAPIのドキュメントとなると公式の英語ドキュメント以外なかなか見当たらないため、今回まとめました。
本稿がGAM API入門としてお役に立てたら幸いです。
参考リンク
Google AdManager API ドキュメント
Githubリポジトリ
https://github.com/googleads/googleads-php-lib
GAM APIの有効化について
サービスアカウントフロー、ウェブアプリケーションフローについて