つかびーの技術日記

(情報)工学修士, 元SIer SE, 現Web系 SEの技術blogです。Scala, Java, JS, TS, Python, Ruby, AWS, GCPあたりが好きです。

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から作る(登録する)のであれば苦労するかもしれません。

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

 - ツール