つかびーの技術日記

情報系修士卒のWeb系技術日記です。現在のフォーカス分野はアドテクです。

Google DoubleClick for Publishers (DFP)のAPIを使う!API解説編

   

前回(Google DoubleClick for Publishers (DFP)のAPIを使う!API準備編)はDFP APIを使う環境を準備しました。

今回は他のAPIについて解説していきます。

リファレンス

まずは以下のリファレンスは常に見ておきましょう。

サンプルコード(Browse Example Code)
https://developers.google.com/doubleclick-publishers/docs/clients

API(SOAP)仕様
左のナビゲーションからお使いのバージョンを選択して見てください。
https://developers.google.com/doubleclick-publishers/docs/rel_notes

基本

これらAPIは見ると分かりますが頻繁にアップデートされます。またそれぞれのバージョンにはDeprecated期日が設定されています。この期日が来るとAPIが動かなくなることがあります。このことは念頭に置いておきましょう。APIバージョンが変わるとJavaパッケージ名が変わるのでjarの差し替えだけでなくソースコードの修正が必要です。

使い方は上記URLのサンプルコードを見れば一目瞭然です。正確なads.propertiesがある状態でコードをコピペしてくれば動きます。

基本的にはOrder, LineItem, Creative, LineItemCreativeAssociationを登録すると1つの配信設定が完了します。これらはOrderServiceやLineItemServiceというもので登録して行きます。作る順番も左記の通りです。それぞれのオブジェクトにはorderIdなどのフィールドがあるので、ここに既に作成したOrderなどのIDを入れて関連付けて行く、という感じです。

登録、更新はサンプルを見るとすぐに分かりますが、削除がサンプルに見当たりません。ですが、実際にはできます。各ServiceにはperformXXXXXXActionというメソッドがあります。これにDeleteLineItemsなどのオブジェクトを食わせるとできたりします。

DFP APIは非常に遅いです。

DBではないのでトランザクションの管理ができません。またたまにAPIのレスポンスが帰ってこなかったり、APIのコールリミットに達した場合即座にエラーを返してくる等します。ですので、複数のOrderやLineItemに対して一括して何かを行う、というような場合整合性を保つのが非常に面倒です。

DFP画面上でできることでも、API経由ではできないことがあったりします。例えばターゲティング初期設定というものがDFP画面上にはありますが、これはAPI経由で取得したり設定することはできません。他にも履歴の取得ができなかったりします。

LineItemには廃止されたフィールドなどが存在しています。例えばtargetPlatformは以前は画面上にも存在した項目ですが、現在では廃止しました。ところがDFPシステム上では有効です。かならずsetTargetPlatformでANYを設定しておくようにしましょう。

LineItemのTargetingの仕様が非常に複雑です。フィールドがめちゃくちゃネストしています。さらにCustomTargetingはKeyValue型とAudienceSegment型が混在している上に、ORとANDとISの条件指定も相まって訳が分かりません。ここは設定に苦労するかと思います。OrderやLineItem, LineItemCreativeAssociationのフィールドがよくわからない場合は、一旦DFP画面上で適当なものを作ってそれを取得し、デバッガで見るのが楽かと思います。

その他

サンプルコード無しで申し訳ないですが、まあ無くても公式サンプル見れば大体大丈夫かと思います。

さらっと書いていますが、相当このAPIには苦しめられました。お使いの用途がOrderやLineItemの一部分の更新なら対して問題はありませんが、これらを1から作る(登録する)のであれば苦労するかもしれません。

次回の予定は無いですが、これは!と思ったことがあれば随時書いて行こうかと思います。

 - ツール