Yahoo!広告のデータは、Yahoo! 広告スクリプトを使うことで「広告管理画面にログインしてレポートを作成し、ダウンロードしてエクセルに貼り付けて、集計して……」という工程無く、Googleスプレッドシートに出力ができます。
Googleスプレッドシートに出力できれば、レポート作成時間の削減はもちろん、データの共有・表やグラフの作成が容易にできるようになります。
今回はYahoo! 広告スクリプトを用いてGoogleスプレッドシートにレポートを出力する方法を、Googleアカウントの認証方法から出力データのカスタマイズ方法まで、丁寧に解説します。
できるだけわかりやすく解説しますが、基本的なJavaScriptの知識が必要になることは念頭に置いておいてください。
Yahoo!広告スクリプトの基本や導入方法は下記記事を参考にしてください。
Google アカウントの認証
まずは、出力対象のスプレッドシートを編集できるGoogleアカウントを連携する必要があります。
1.Yahoo!広告スクリプトの画面を開き、右上の「外部ツール連携」、「Sign in with Google」を選択
2.必要な権限を選択して「続行」
3.「ステータス」の欄が「連携済み」になっていれば完了です。
実装
では実装していきましょう。
まずは基本となる「検索広告の今月のキャンペーンレポート」を出力するスクリプトを記載します。細かい出力データの設定は後ほど解説します。
1.スクリプト欄に下記コードを記載します。(ベースとなるコードは下記リンクから、ディスプレイ広告の場合は「スプレッドシートにレポート情報を出力する(ディスプレイ広告)」の項目を参照してください。)
参考:Googleスプレッドシート │ Yahoo!広告 スクリプト │ Developer Center - Yahoo!広告
function main() {
reportDataToSpreadsheet();
}
function reportDataToSpreadsheet(){
const spreadsheetId = 'スプレッドシートのID';
const sheetName = 'シート1';
const ss = SpreadsheetApp.openById(spreadsheetId);
let sh = ss.getSheetByName(sheetName);
sh.clear();
const reportData = AdsUtilities.getSearchReport({
accountId: AdsUtilities.getCurrentAccountId(),
fields: [
'ACCOUNT_NAME','CAMPAIGN_NAME','IMPS','CLICKS','COST','CONVERSIONS'
],
reportDateRangeType: 'THIS_MONTH',
reportType: 'CAMPAIGN',
reportSkipColumnHeader : "FALSE",
}).reports[0].rows;
sh.getRange('A1').setValues(reportData);
}
2.上記コードのspreadsheetID定数に対象のスプレッドシートの下記部分を記載します。
https://docs.google.com/spreadsheets/d/”この部分”/edit#gid=0
3.sheetName定数にスプレッドシートのシート名を記載します。
4.スクリプトを保存し、「認証」を選択肢、ビジネスIDで認証します。
5.「実行」を選択します。
5.実行履歴のページに移動しますので、ステータスが「成功」になったのを確認します。ここで何らかのエラーがある場合には、エラー内容を確認し、必要に応じて修正しましょう。
6.スプレッドシートを開いてレポートが出力されたのを確認しましょう。
実行頻度の設定
たとえば毎日レポートを更新したい場合、スクリプトの実行頻度を設定することで可能です。
1.スクリプト一覧画面を開き「実行頻度」の欄を選択します
2.実行頻度を選択し、「保存」を選択して完了です。
出力データのカスタマイズ
以上でスプレッドシートへの出力の基本は押さえられたと思います。ここからは自分の出力したい内容にカスタマイズする方法を見ていきます。
出力列
出力列の指定は前述のコードの下記部分でfields配列の内容を変更します。左から並べた順に列に出力されます。
fields: [
'ACCOUNT_NAME','CAMPAIGN_NAME','IMPS','CLICKS','COST','CONVERSIONS'
],
たとえば、日別のレポートを作成したい場合は「DAY」を追加します。
設定できる項目は下記リンクにあるCSVファイル(検索広告用)を参照してください。
参考:MCC配下のアカウントサマリーレポート │ Yahoo!広告 スクリプト │ Developer Center - Yahoo!広告
出力期間
出力期間の変更は下記コードの「THIS_MONTH」の部分を変更します。
reportDateRangeType: 'THIS_MONTH',
設定できる期間は下記です。
項目 | 内容 |
---|---|
TODAY | 本日 |
YESTERDAY | 昨日 |
LAST_7_DAYS | 本日を除く、過去7日間 |
LAST_WEEK | 先週の月曜日から日曜日 |
LAST_14_DAYS | 本日を除く、過去14日間 |
LAST_30_DAYS | 本日を除く、過去30日間 |
LAST_BUSINESS_WEEK | 先週の月曜日から5営業日 |
THIS_MONTH | 本日を含む、当月 |
THIS_MONTH_EXCEPT_TODAY | 本日を除く、当月 |
LAST_MONTH | 前月 |
ALL_TIME | 取得可能な全期間 |
CUSTOM_DATE | ユーザーにより指定される期間※集計対象期間の指定が必要 |
参考:ReportDefinitionServiceReportDateRangeType | リファレンス
CUSTOM_DATEの指定方法
CUSTOM_DATEを使用して特定の期間を指定する場合、集計対象期間の設定が必要です。
集計対象期間の設定方法は前述のコードを下記のように変更します。
function main() {
reportDataToSpreadsheet();
}
function reportDataToSpreadsheet(){
const spreadsheetId = 'スプレッドシートのID';
const sheetName = 'シート1';
const startDate = yyyyMMdd;//開始日・終了日をyyyyMMdd の形式で指定
const endDate = yyyyMMdd;
const ss = SpreadsheetApp.openById(spreadsheetId);
let sh = ss.getSheetByName(sheetName);
sh.clear();
const reportData = AdsUtilities.getSearchReport({
accountId: AdsUtilities.getCurrentAccountId(),
dateRange: {
endDate: endDate,
startDate: startDate,
},
fields: [
'ACCOUNT_NAME','CAMPAIGN_NAME','IMPS','CLICKS','COST','CONVERSIONS'
],
reportDateRangeType: 'CUSTOM_DATE',
reportType: 'CAMPAIGN',
reportSkipColumnHeader : "FALSE",
}).reports[0].rows;
sh.getRange('A1').setValues(reportData);
}
開始日・終了日をyyyyMMddの形式で指定し、reportData項目に追加することで、期間の指定ができます。
レポートの種類
レポートの種類の変更は下記の「CAMPAIGN」の部分を変更します。
reportType: 'CAMPAIGN',
主なレポートの種類は下記です。
項目 | 内容 |
---|---|
CAMPAIGN | キャンペーンレポート |
ADGROUP | 広告グループレポート |
AD | 広告レポート |
KEYWORDS | キーワードレポート |
SEARCH_QUERY | 検索クエリレポート |
GEO | 地域別レポート |
その他の出力できるレポートの種類は下記を参考にしてください
参考:ReportDefinitionServiceReportType | リファレンス
まとめ
これまでは、Yahoo!広告のレポートをGoogleスプレッドシートに出力したいと考えたとき、手動でレポートをダウンロードして手を加えるほか、APIを用いる、またはサードパーティの広告レポートツールを利用するなどの方法しかありませんでした。
Yahoo! 広告スクリプトのリリースにより、Yahoo!公式のツールを使うという選択肢が生まれました。
勝手が違いとっつきづらいイメージもあると思いますが、ぜひこの記事を参考に実装してみてくださいね。