2015年2月13日金曜日

【AdWords script】2. AdWordsのA/Bテストをより柔軟に

海外の業界ニュースサイト等でもAdWords scriptの情報やサンプルコードが増えてきました。AdWordsへの予算が特に多い国はそうなりますよね。ちょっとした自動化やアラートから、大量の自動入稿・入札処理まで、イマジネーションを働かせればいろいろなことができます。

さて、今日はSearch Engine LandでBrainlabs社のDaniel Gilbert氏が書いたAdWords scriptでA/Bテストを行う方法について紹介したいと思います。

リンク:Here’s An AdWords Script That Will Let You A/B Test Anything

最近Daniel氏は同サイトでAdWords script関連の記事を書くことが多いようです。所属する会社について自己紹介欄で「(自称)世界最高のエージェンシー」と書いているところがいいですね!本人ともやり取りし、「日本語でももちろん使えますのでぜひ!」とのことでした。

ご存知の方も多いと思いますが、AdWordsにはA/Bテストを実施できる機能が実装されています。AdWords Campaign Experiments(ACE)- キャンペーンテストですね。ACEはなかなかよくできた機能ではあるのですが、キャンペーン設定の一部として動作するので、異なるキャンペーン設定そのものをテストすることができないというのがDaniel氏が少々物足りなさを感じるところだったようです。かといって、2週間Aパターン、2週間Bパターンといったビフォア・アフター分析は、毎分オークションで変化があるAdWordsには向いているとは言えません。

その課題を解決すべく、Daniel氏はAdWords scriptでA/Bテストを実施できるようにしました。ロジックは比較的シンプルなもので、キャンペーンを複製して、それぞれにラベルを設定します。ACEと同様、「コントロール」と「テスト」と分けるとわかりやすいかもしれません。この2つを1時間毎に切り替えるというscriptです。それぞれ同等レベルのインプレッションになるまで数週間などテスト期間を設定する、というイメージです。管理画面でキャンペーンラベルの画面に行けば、このテスト結果を見ることができます。

同氏も注意点として挙げていますが、といっても1時間毎が限界なので、これは完璧な方法ではないということです。より高い頻度で切り替える場合はAdWords APIを使うことを推奨します。また、品質スコアその他要因により、必ずしもキャンペーンがそれぞれ均等に配信される保証はありません。

ただ、シンプルかつ柔軟にA/Bテストを実施できるのはいいですね!サンプルコードをご覧になってもわかりますが、極めて簡素なロジックです。

2015年2月2日月曜日

【AdWords script】1. レポートをGoogleスプレッドシートに流し込む

さて、AdWords scriptについてもそろそろ書いていきましょう。

AdWords scriptは今まで取り上げてきたGoogle Apps ScriptがAdWords管理画面にIDE(統合開発環境)がエンベッドされているものです。AdWordsアカウントの入札、入稿、レポーティングにおけるさまざまな自動処理が可能になる、非常に便利な機構です。

日々の運用管理をする上でデータのモニタリングは当然大事ですが、いちいちCSVでレポートデータを管理画面から落としてExcelで処理しなくても、Googleスプレッドシートに自動的にデータを落とし、必要な処理を関数化したりGoogle Apps Scriptで処理を定義することが可能です。

同じGoogleのプラットフォームですので、AdWordsとGoogleスプレッドシートと連携させるのはとても楽です。特にAdWordsに対する認証やアカウントの選択をコードにする必要がなく簡単です。

前述のように、レポートデータを落としてからの処理がキモではありますが、まずはどのようにAdWords scriptを設定しデータをGoogleスプレッドシートに流し込むかのキホンとコツを解説します。

AdWords scriptの設定
実際のAdWords scriptを見ながら解説します。このままご自分のAdWordsアカウントのAdWords scriptにコピペ利用できますので、ぜひトライしてみてください。

 【サンプルコード】
これだけです。簡単ですね。AdWords scriptに名前を付けて保存してください。実行すると、「Campaign Performance Report + '取得日時'」という名前のスプレッドシートができているはずです。

ブロック毎にコメントアウト(//の部分)していますので、参考にしてください。
最初の部分は、ファイル名(レポート名+日付)をつけたスプレッドシートを生成するための変数指定になっています。最後のexportToSheetメソッドで、実際のスプレッドシート生成とデータのエキスポートを同時に処理するようになっています。

これは実はいろいろやり方はあるかと思ってまして、
  1. 新しいスプレッドシートを生成
  2. 既成のテンプレートをコピー利用する
  3. 既成のスプレッドシートの値を毎回消して利用する
今回の場合は1.にしていますが、みなさんの好みで処理方法は選んでください。

AWQL(AdWords Query Language)と便利なツール
真ん中のAdWordsApp.reportオブジェクトでAdWordsレポートの種類、出力するフィールド、出力条件を指定します。

この部分はAWQL(AdWords Query Language)というAdWordsデータに対してクエリーをかけるためのSQLライクな言語です。
  • SELECTで出力したいフィールドを指定しています。CampaignId、Impressions、 Clicks、Ctr、Costを指定しました。投稿の都合上、キャンペーンIDにしていますが、キャンペーン名(CampaignName)にするとわかりやすいでしょう(日本語でも問題ありません)。
  • FROMで出力したいレポートを指定しいています。今回はキャンペーンレポート(CAMPAIGN_PERFORMANCE_REPORT)を指定しています。
  • WHEREは条件指定です。Impressions > 0とすることでインプレッション1以上のキャンペーンのみを出力します。
  • DURINGは期間指定です。LAST_30_DAYSで過去30日間を指定しています。20150101,20150131のように、日付で期間指定することも可能です。
  • その他、ソート順や取得件数なども指定できますが、詳細はこちらをご覧ください(https://developers.google.com/adwords/api/docs/guides/awql
AdWordsにはいろいろな種類のレポートがありますし、取得できるデータの種類も多数あります。クエリー文を書くための便利な外部ツールがありますのでご紹介します。その名もAWQL.me(https://www.awql.me/)。

ログインします。認証を完了すればコンソールでAdWordsアカウントをプルダウンで選択できるようになります。

コンソールでfromの行にマウスを合わせると右のHelpの内容が変わりますね。ここでレポートの種類を確認できますので、別のものを選択したい場合はHelpのレポート名をコピペして、コンソールのfromの部分を置き換えてください。

レポート種類を変えると、そのレポートで取得できるフィールドが出てくることも確認できるかと思います。同じように必要なフィールドをコピペしてください。

Runを押すと、下に結果が戻ってきます。ここで実際にAWQLコードが間違っていないか確認できます。

コードが確認できたら、AdWords scriptで活用ください(AWQL.meの指定を参考にしつつ、コードの書き方は実際のAdWords scriptのそれに準じてください)。