Structure Reports

クライアント センターの構成データを AdWords API サービスで収集する際は、アカウントの規模が大きいほど時間がかかります。しかし、お客様のアカウントとその中のキャンペーン、広告グループ、広告、キーワードなどに関する基本的な構成情報は、別の方法で簡単に取得することが可能です。AdWords アドホック レポートを使用すれば、アカウントの基本構造の作成に利用できる、オブジェクトの ID、名前、値を迅速に取得できます。これ以降、詳しい情報を知りたい要素があれば、それを見つけることが可能です。必要に応じてオブジェクトの AdWords サービスを利用し、収集済みのオブジェクト ID に基づいて関心のある領域を具体化することもできます。

各種レポート タイプのドキュメントでは、各レベルの構造データでどの列エントリを取得できるのか確認できます。列のヘッダーは、プログラムを使って取得することもできます(ReportDefinitionService の getReportFields メソッドを参照してください)。レポートの列を慎重に選択すれば、モデルを作成するために必要な情報を、選択したクライアント アカウントから取得できます。レポートは多様なフォーマット(CSV や XML など)で作成できますが、CSV を選択した場合は、すぐに利用可能なライブラリ経由のレスポンス ストリームを利用し、選択したオブジェクトのフォーマットの各エントリにフィルタを適用することができます。また、CSV の出力はシンプルであるため、処理に時間がかかりません。

キャンペーンのサンプル

ここでは、アカウントの各キャンペーンに関するデータを収集する方法を紹介します。AdWords からデータを収集する場合は、AdWords クエリ言語のリクエストを使用することができ、取得したデータはローカルのデータベースに挿入できます。必要なデータが揃ったら、ローカルのデータベースに SELECT リクエストを送信し、目的の構造表を作成します。キャンペーンを作成するには、次の 3 段階の手順を行います。

1. レポートのキャンペーン データを問い合わせる

SELECT CampaignStatus, CampaignId, CampaignName, ExternalCustomerId,
CustomerDescriptiveName, Amount, BiddingStrategy, Impressions
FROM CAMPAIGN_PERFORMANCE_REPORT
DURING YESTERDAY

まずは、AWQL リクエスト文字列を作成し、キャンペーンの掲載結果レポートから取得するすべての列ヘッダーを配置します(列エントリの取得については、レポート タイプのドキュメントを参照してください)。レポートのタイプと対象期間も指定する必要があります。このクエリでレポートを作成する際には、ダウンロードの形式として CSV を指定します。

2. ローカルでキャンペーンの表を作成する

CREATE TABLE campaigns (Status STRING, id LONG, name STRING, extCID LONG,
custName STRING, amount FLOAT, biddingStrategy STRING, impressions INTEGER)

このステートメントではキャンペーンの表が作成され、SQLite 表には列のヘッダーとタイプが表示されます。

3. キャンペーンの表にエントリを挿入する

INSERT INTO campaigns (Status, id, name, extCID, custName, amount,
biddingStrategy, impressions) VALUES (?, ?, ?, ?, ?, ?, ?, ?)

これは、キャンペーンの表にエントリを挿入するための SQL ステートメントです。「?」のひとつひとつには、レポートのダウンロードで受信する値を使用してパラメータ値を設定します。

レポートのフォーマット

CSV 形式のレポートの一般的なフォーマットは、先頭がタイトル行で、その後に列のヘッダー、結果、合計(数値の列の合計)が続きます。このため、AWQL レスポンスの最初の 2 行は飛ばして、残りの行をローカルのデータベースに挿入します。残りの行とは合計の行までのことですが、合計は無視することもできます。次に示すのは、広告表示オプションに関するレポートのサンプル レスポンスです。

"Sample Extension Report"
State,Campaign ID,Ad Extension ID,Ad Extension Type
active,68637337,14086417,location extension
deleted,84039937,21702097,location extension
active,85539817,51774217,mobile extension
active,94709137,29009257,location extension
Total, --, --, --

このサンプルでは、先頭のタイトル行に続いて、レポートから取得することを指定した列の名前が並んでいます。こうした列は、リクエストで指定した順序で返されます(ただし、列の指定が重複している場合は、2 つ目の指定が省略されます)。このため、データベースの表にはこれらの行が適切な順序で挿入されます。レポートの最後には合計の行が表示されます。

この手順を広告グループ、広告、キーワード、および広告の掲載基準で繰り返し行った後は、SQL リクエストを使用して表を取得し、出力できます。収集した情報は、自由に独自のコードで利用できます。ローカルの SQL データベースを使用するメリットは、次のような SQL ステートメントを使用すると実感できます。

SELECT * FROM campaigns
LEFT OUTER JOIN adGroups ON campaigns.id=adGroups.campaignId
LEFT OUTER JOIN ads ON ads.adAdGroupId=adGroups.adGroupId
および
SELECT * FROM criteria
JOIN keywords
WHERE criteria.critType='Keyword' AND keywords.keywordId=criteria.critId

ヒントとコツ

この方法でアカウントのデータを取得する際には、気を付けなければならない多くの落とし穴があります。たとえば、特定のレポートをリクエストする際に、表示回数 0 回の行が返されることを阻止する列を含めると、いかなる結果も取得できません。広告の掲載結果レポートの KeywordId フィールドがそうした例で、このフィールドの Notes 列ではそのことが詳しく説明されています。他の列は ConversionTypeName と Clicks のように相互に排他的になっています。構造のレポートをダウンロードする際には、こうした問題のある列を指定しないようにしてください(Behaviour 列で「Attributes」と表示される列のみ指定するのがベストです)。

作成した表の列に名前を付ける際には注意が必要です。値を取得するには列ヘッダーを指定する必要があるため、複数の表にまたがる場合であっても名前の重複は避けた方が、リクエストを簡単に処理できます。重複する列をリクエストすると、それらの列がレスポンスから削除されて順序が混乱するので、重複する列はリクエストしないようにしてください。Notes 列の形式や意味については、ドキュメントをご覧ください。

AWQL のクエリの最初の列を選ぶときには注意が必要であり、「Total」という単語が最終行の先頭だけに表示されるようにしてください。最初の列には ID(Long 型)も使用できますが、Status(String 型)を選択すると、指定可能な値がごく一部に制限されます。これにより、各行の最初の戻り値を解析する必要があるかどうかを心配する必要がなくなり、レスポンスで返されたすべてのデータが適切に処理されていることを前提にして、安心して次の処理に進むことができます。

各列のデータ型が適切であるように配慮することも重要です。文字列から適切な値に解析する必要がある場合に、予期せぬデータを受け取って、そのまま文字列専用のパーサーを呼び出すと例外が送出されます。

関連情報

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。