目次
Google 広告スクリプトを設定しデータをGoogleスプレッドシートに流し込む
さて、Google 広告スクリプト(旧AdWords script)のサンプルコードなどについても書いていきましょう。
Google 広告スクリプトは今まで取り上げてきたGoogle Apps ScriptがAdWords管理画面にIDE(統合開発環境)がエンベッドされているものです。AdWordsアカウントの入札、入稿、レポーティングにおけるさまざまな自動処理が可能になる、非常に便利な機構です。
日々の運用管理をする上でデータのモニタリングは当然大事ですが、いちいちCSVでレポートデータを管理画面から落としてExcelで処理しなくても、Googleスプレッドシートに自動的にデータを落とし、必要な処理を関数化したりGoogle Apps Scriptで処理を定義することが可能です。
同じGoogleのプラットフォームですので、AdWordsとGoogleスプレッドシートと連携させるのはとても楽です。特にAdWordsに対する認証やアカウントの選択をコードにする必要がなく簡単です。
前述のように、レポートデータを落としてからの処理がキモではありますが、まずはどのようにGoogle 広告スクリプトを設定しデータをGoogleスプレッドシートに流し込むかのキホンとコツを解説します。
Google 広告スクリプトの設定
実際のGoogle 広告スクリプトを見ながら解説します。このままご自分のAdWordsアカウントのGoogle 広告スクリプトにコピペ利用できますので、ぜひトライしてみてください。
最初の2行(var emailとvar spreadsheet_urlには任意の情報を入れてお使いください。
Googleスプレッドシートのサンプルはこちらをコピー利用いただけます。
https://goo.gl/z1VQaW
【サンプルコード】
// グローバル変数 var email = '(メール通知を受信するメールアドレスをここにペースト。''の間に。)'; var spreadsheet_url = '(レポートを流し込みたいGoogleスプレッドシートのURLをペースト。''の間に。)'; var formattedDate = Utilities.formatDate(new Date(), "JST", "yyyy/MM/dd' 'HH:mm:ss"); var cid = AdWordsApp.currentAccount().getCustomerId(); var accountname = AdWordsApp.currentAccount().getName(); function main() { var spreadsheet = copySpreadsheet(spreadsheet_url); var rawsheet = spreadsheet.getSheetByName('rawdata'); var formatsheet = spreadsheet.getSheetByName('AW-cp'); formatsheet.getRange(1, 7, 1, 1).setValue(formattedDate); formatsheet.getRange(1, 2, 1, 1).setValue('CID:'); formatsheet.getRange(1, 3, 1, 1).setValue(cid); formatsheet.getRange(2, 2, 1, 1).setValue('アカウント名:'); formatsheet.getRange(2, 3, 1, 1).setValue(accountname); // レポート取得 var report = AdWordsApp.report( 'SELECT CampaignName, Impressions, Clicks, Ctr, Cost, ConversionsManyPerClick, CostPerConversionManyPerClick, ConversionRateManyPerClick, AveragePosition ' + 'FROM CAMPAIGN_PERFORMANCE_REPORT ' + 'WHERE Impressions > 0 ' + 'DURING THIS_MONTH'); // 上記AWQLで指定したデータをエキスポート report.exportToSheet(rawsheet); // コスト列でソート rawsheet.sort(5, false); // ヘッダー設定 var header = [ 'キャンペーン名', 'インプレッション数', 'クリック数', 'クリック率', 'コスト', 'コンバージョン数', 'コンバージョン単価', 'コンバージョン率', '平均掲載順位', ]; var headerrange = formatsheet.getRange(4, 2, 1, 9); headerrange.setValues([header]); headerrange.setHorizontalAlignment("center"); headerrange.setFontWeight("bold"); headerrange.setFontSize(8); // rawdataをフォーマットシートへ値コピー(フォーマットシートのクリック率列の書式を%にしておく) var lastRow = rawsheet.getLastRow(); var lastColumn = rawsheet.getLastColumn(); var copyValue = rawsheet.getRange(2, 1, lastRow, lastColumn).getValues(); formatsheet.getRange(5, 2, lastRow, lastColumn).setValues(copyValue); // 処理後、rawdataシートを削除する spreadsheet.deleteSheet(rawsheet); // ログ記録とメール通知設定 Logger.log('キャンペーンレポート(今月)の準備ができました\n' + spreadsheet.getUrl()); if (email) { MailApp.sendEmail(email, 'キャンペーンレポート(今月)の準備ができました' + ' ' +accountname + ' ' + formattedDate, spreadsheet.getUrl()); } } // スプレッドシートのコピー利用 function copySpreadsheet(spreadsheetUrl) { return SpreadsheetApp.openByUrl(spreadsheetUrl).copy( 'キャンペーンレポート(今月)' + ' ' + accountname + " " + formattedDate); }
これだけです。簡単ですね。Google 広告スクリプトに名前を付けて保存してください。実行すると、「Campaign Performance Report + ‘取得日時’」という名前のスプレッドシートができているはずです。
ブロック毎にコメントアウト(//の部分)していますので、参考にしてください。
最初の部分は、ファイル名(レポート名+日付)をつけたスプレッドシートを生成するための変数指定になっています。最後のexportToSheetメソッドで、実際のスプレッドシート生成とデータのエキスポートを同時に処理するようになっています。これは実はいろいろやり方はあるかと思ってまして、
- 新しいスプレッドシートを生成
- 既成のテンプレートをコピー利用する
- 既成のスプレッドシートの値を毎回消して利用する
今回の場合は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コードが間違っていないか確認できます。
コードが確認できたら、Google 広告スクリプトで活用ください(AWQL.meの指定を参考にしつつ、コードの書き方は実際のGoogle 広告スクリプトのそれに準じてください)。