目次
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 広告スクリプトのそれに準じてください)。



