はじめに
みなさんこんにちはALEXです。お客様のウェブサイトの集客ツールとして有効な「google広告」。これは非常に効果的にリードをウェブサイトに誘導することができます。私も多くのクライアント様のgoogle広告の運用をお手伝いさせていただいております。
google広告運用で大切なこと
効果的に広告を運用するにあたり大切なことは
「データを収集して理解する」ということです。この作業とても大切ですが
めんどくさいなあ。。。というお声をよく伺います。
そこで、今回はお客様のその面倒くささを解決するお手伝いとして、
Google広告のデータレポートを無料で作成する方法をご紹介します。
Google広告のデータレポートを無料で作成する方法
まずは、無料でデータを入手しましょう。
事前にGoogleスプレッドシートを使えるようにしておいてください。
Google広告にログインします。次に画面上の「ツール」ー「スクリプト」をクリックします。

続いて、スクリプトの画面から新規追加のアイコンをクリックします。

新規スクリプトの画面が出ますので、スクリプト名を記入(adwordsreportとか)しスクリプトの部分に以下のコードをコピペしてください。
// グローバル変数
//レポート表紙情報
var REP_AUTHOR = "レポート作成者名";//見出しページの差し込み文
var CUSTOMER = "レポート宛名";//見出しページの差し込み文
var COPYRIGHT = "Copyrigth(C) Alex and compnay AII Right Reserved.";//一番下のコピーライト
var DATA_DATE = "2019/01/01"; //yyyy/mm/dd
var DATA_MONTH = "2019年1月";//レポートでの表記用
//AWQL用データ
var AWQL_DURING = "20190101, 20190131"//レポート取得期間。例>2019年1月1~31日;
var FOLDER_ID = '{1MbP915l_7dIYO3sYfJrv20i9OzVhcuyj}';//レポートを出力したいフォルダを指定。Googleドライブでフォルダを開くとURLから参照できます。現在は、[AdWordsレポート生成]のフォルダを参照中。
var email = 'info@alexandcompany.net';//ここにメールアドレスを登録。レポートの送信先
var spreadsheet_url = 'https://docs.google.com/spreadsheets/d/1tG_bjt85bWyOfAiFTdgQ7aHEIvGG86MyDqwCEmmzOyI/edit';//レポートテンプレートのファイルを参照。変更不要。
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 SSId = copySpreadsheet(spreadsheet_url);
// var spreadsheet = SpreadsheetApp.openById(SSId);
var spreadsheet = copySpreadsheet(spreadsheet_url);
//「見出し」ページの作成
var toppage = spreadsheet.getSheetByName('見出し');
toppage.getRange(4, 1).setValue(CUSTOMER);
toppage.getRange(8, 3).setValue(cid);
toppage.getRange(31, 4).setValue(REP_AUTHOR);
toppage.getRange(34, 2).setValue(COPYRIGHT);
//「総計」ページの作成
var sumarrypage = spreadsheet.getSheetByName('総計');
sumarrypage.getRange(1, 12).setValue(DATA_DATE);
//検索連動レポート(日別)
var rawsheet = spreadsheet.getSheetByName('rawdata');
var formatsheet = spreadsheet.getSheetByName('アドワーズ');
formatsheet.getRange(1, 7, 1, 1).setValue(formattedDate);//セルの範囲取得:getRange(row, column [, numrows [, numcolumns]])
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);
//検索連動レポート(KW別)
var rawsheet2 = spreadsheet.getSheetByName('rawdata2');
var formatsheet2 = spreadsheet.getSheetByName('アドワーズKW');
formatsheet2.getRange(1, 7, 1, 1).setValue(formattedDate);//セルの範囲取得:getRange(row, column [, numrows [, numcolumns]])
formatsheet2.getRange(1, 2, 1, 1).setValue('CID:');
formatsheet2.getRange(1, 3, 1, 1).setValue(cid);
formatsheet2.getRange(2, 2, 1, 1).setValue('アカウント名:');
formatsheet2.getRange(2, 3, 1, 1).setValue(accountname);
//ディスプレイネットワーク(日別)
var rawsheet3 = spreadsheet.getSheetByName('rawdata3');
var formatsheet3 = spreadsheet.getSheetByName('GDN');
formatsheet3.getRange(1, 7, 1, 1).setValue(formattedDate);//セルの範囲取得:getRange(row, column [, numrows [, numcolumns]])
formatsheet3.getRange(1, 2, 1, 1).setValue('CID:');
formatsheet3.getRange(1, 3, 1, 1).setValue(cid);
formatsheet3.getRange(2, 2, 1, 1).setValue('アカウント名:');
formatsheet3.getRange(2, 3, 1, 1).setValue(accountname);
// レポート取得
var adwordsreport = AdWordsApp.report(
'SELECT Date, Impressions, Clicks, Ctr, Conversions, ConversionRate, CostPerConversion, AveragePosition, Cost ' +
'FROM ACCOUNT_PERFORMANCE_REPORT ' +
'WHERE AdNetworkType1 = SEARCH ' +
//'WHERE Impressions > 0 ' +
'DURING '+AWQL_DURING);
var keywordreport = AdWordsApp.report(
'SELECT Criteria, KeywordMatchType, CampaignName, Impressions, Clicks, AveragePosition, Ctr, Conversions, ConversionRate, CostPerConversion, Cost ' +
'FROM KEYWORDS_PERFORMANCE_REPORT ' +
'DURING '+AWQL_DURING);
var gdnreport = AdWordsApp.report(
'SELECT Date, Impressions, Clicks, Ctr, Conversions, ConversionRate, CostPerConversion, Cost ' +
'FROM ACCOUNT_PERFORMANCE_REPORT ' +
'WHERE AdNetworkType1 = CONTENT ' +
//'FROM DISPLAY_TOPICS_PERFORMANCE_REPORT ' +
//'WHERE Impressions > 0 ' +
'DURING '+AWQL_DURING);
// 'WHERE Status = ENABLED '+
// 'WHERE Impressions > 0 ' +
// レポート取得
var groupreport = AdWordsApp.report(
'SELECT CampaignName, AdGroupName,Impressions, Clicks, AveragePosition, Ctr, Conversions, ConversionRate, CostPerConversion, Cost ' +
'FROM KEYWORDS_PERFORMANCE_REPORT ' +
'WHERE Status = ENABLED '+
// 'WHERE Impressions > 0 ' +
'DURING THIS_MONTH');
// 上記AWQLで指定したデータをエキスポート
//report.exportToSheet(rawdata3);
// 上記AWQLで指定したデータをエキスポート
adwordsreport.exportToSheet(rawsheet);
rawsheet.insertColumns(2);//曜日欄
rawsheet.insertColumns(6);//CPC欄
// 上記AWQLで指定したデータをエキスポート
keywordreport.exportToSheet(rawsheet2);
rawsheet2.insertColumns(8);//CPC欄
// 上記AWQLで指定したデータをエキスポート
groupreport.exportToSheet(rawsheet3);
// rawsheet3.insertColumns(2);//曜日欄
// rawsheet3.insertColumns(6);//CPC欄
// rawsheet3.insertColumns(9);//平均順位欄
// 日付列でソート
rawsheet.sort(1, true);
// コスト列でソート
rawsheet2.sort(12, false);
// 日付列でソート
rawsheet3.sort(1, true);
// ヘッダー設定
var header = ['日付', '曜日', 'インプレッション数', 'クリック数', 'クリック率', 'クリック単価', 'コンバージョン数', 'コンバージョン率', 'コンバージョン単価', '平均掲載順位', 'コスト',];
var headerrange = formatsheet.getRange(4, 2, 1, 11);
headerrange.setValues([header]);
headerrange.setHorizontalAlignment("center");
headerrange.setFontWeight("bold");
headerrange.setFontSize(8);
// ヘッダー設定
var header2 = [ 'キーワード', 'マッチタイプ', 'キャンペーン', '表示数', 'クリック数', '平均掲載順位', 'クリック率', 'CPC', 'CV数', 'CV率', 'コンバージョン単価', 'コスト',];
var headerrange2 = formatsheet2.getRange(4, 2, 1, 12);
headerrange2.setValues([header2]);
headerrange2.setHorizontalAlignment("center");
headerrange2.setFontWeight("bold");
headerrange2.setFontSize(8);
// ヘッダー設定
var header3 = ['日付', '曜日', 'インプレッション数', 'クリック数', 'クリック率', 'クリック単価', 'コンバージョン数', 'コンバージョン率', 'コンバージョン単価', '平均掲載順位', 'コスト',];
var headerrange3 = formatsheet3.getRange(4, 2, 1, 11);
headerrange3.setValues([header3]);
headerrange3.setHorizontalAlignment("center");
headerrange3.setFontWeight("bold");
headerrange3.setFontSize(8);
// rawdataをフォーマットシートへ値コピー(フォーマットシートのクリック率列の書式を%にしておく)
var lastRow = 31; //rawsheet.getLastRow();
var lastColumn = rawsheet.getLastColumn();
// var copyValue = rawsheet.getRange(2, 1, lastRow, lastColumn).getValues();
// formatsheet.getRange(5, 2, lastRow, lastColumn).setValues(copyValue);
var copyValue = rawsheet.getRange(2, 1, lastRow, 1).getValues();
formatsheet.getRange(5, 2, lastRow, 1).setValues(copyValue);
var copyValue = rawsheet.getRange(2, 3, lastRow, 3).getValues();
formatsheet.getRange(5, 4, lastRow, 3).setValues(copyValue);
var copyValue = rawsheet.getRange(2, 7, lastRow, 5).getValues();
formatsheet.getRange(5, 8, lastRow, 5).setValues(copyValue);
// rawdataをフォーマットシートへ値コピー(フォーマットシートのクリック率列の書式を%にしておく)
var lastRow2 = 50;//rawsheet2.getLastRow();
var lastColumn2 = rawsheet2.getLastColumn();
// var copyValue2 = rawsheet2.getRange(2, 1, lastRow2, lastColumn2).getValues();
// formatsheet2.getRange(5, 2, lastRow2, lastColumn2).setValues(copyValue2);
var copyValue2 = rawsheet2.getRange(2, 1, lastRow2, 7).getValues();
formatsheet2.getRange(5, 2, lastRow2, 7).setValues(copyValue2);
var copyValue2 = rawsheet2.getRange(2, 9, lastRow2, 4).getValues();
formatsheet2.getRange(5, 10, lastRow2, 4).setValues(copyValue2);
// rawdataをフォーマットシートへ値コピー(フォーマットシートのクリック率列の書式を%にしておく)
var lastRow3 = 31; //rawsheet.getLastRow();
var lastColumn = rawsheet.getLastColumn();
// var copyValue = rawsheet.getRange(2, 1, lastRow, lastColumn).getValues();
// formatsheet.getRange(5, 2, lastRow, lastColumn).setValues(copyValue);
var copyValue3 = rawsheet3.getRange(2, 1, lastRow, 1).getValues();
formatsheet3.getRange(5, 2, lastRow, 1).setValues(copyValue3);
var copyValue3 = rawsheet3.getRange(2, 3, lastRow, 3).getValues();
formatsheet3.getRange(5, 4, lastRow, 3).setValues(copyValue3);
var copyValue3 = rawsheet3.getRange(2, 7, lastRow, 5).getValues();
formatsheet3.getRange(5, 8, lastRow, 5).setValues(copyValue3);
// 処理後、rawdataシートを削除する
// spreadsheet.deleteSheet(rawsheet);
// spreadsheet.deleteSheet(rawsheet2);
// spreadsheet.deleteSheet(rawsheet3);
/* Driv.Files.insert({
"title": ,
"mineType": "application/vnd.google-apps.spreadsheet",
"parents": [{"id": FOLDER_ID }]
});
*/
// moveSS(SSId);
// function moveSS(SSId) {
//
// // var idSs = SpreadsheetApp.create("新規SS").getId();
// var fileSS = DriveApp.getFileById(SSId);
// var folderTarget = DriveApp.getFolderById(FOLDER_ID);
//
// folderTarget.addFile(fileSS);
// DriveApp.getRootFolder().removeFile(fileSS);
//
// }
// ログ記録とメール通知設定
Logger.log('キャンペーンレポート(今月)の準備ができました\n' +
spreadsheet.getUrl());
if (email) {
MailApp.sendEmail(email,
'キャンペーンレポート(今月)の準備ができました' + ' ' +accountname + ' ' + formattedDate,
spreadsheet.getUrl());
}
}
// スプレッドシートのコピー利用
function copySpreadsheet(spreadsheetUrl) {
return SpreadsheetApp.openByUrl(spreadsheetUrl).copy(
'キャンペーンレポート('+ DATA_MONTH +')' + ' ' + accountname + " [作成日:" + formattedDate +"]");
// 'キャンペーンレポート(今月)' + ' ' + accountname + " " + formattedDate).getId();
}
そして保存をクリック。

スクリプトが登録されたら、その名前をクリックします。次に画面下の「実行を」クリック。

これでスクリプトが実行され、Googleドライブ上にデータシートが作成されました。「ログステートメント」をクリックすると画面下にURLが出ますのでこれをクリックしてください。
Googleスプレッドシートにレポートが表示されています。

各データの詳しいご説明は次の記事でご紹介します。
まとめ
Google スプレッドシートでGoogle広告のレポートを作成する方法をご紹介しました。
もっとさらに掘り下げたい、運用を効果的に行いたい、とお悩みのお客様。お気軽にご相談ください。
詳しく見る