Yahoo広告スクリプトを使って、毎日のレポート作業を自動化!
業務効率化公開日:2024年9月3日 更新日:2024年9月3日
これまでデジマナビでは、Google広告スクリプトを使ったレポートの自動化、そしてMicrosoft広告スクリプトを使ったレポートの自動化を紹介してきました。
今回はリスティング広告の三本柱の1つ、Yahoo!広告スクリプトを使ったレポートの自動化について紹介をします。
Google広告・Microsoft広告の自動化は以下を参照してください。
またこの記事では以下2つのコードの実装をおこないます。
- 日別 × キャンペーン別のレポート
- 日別 × キャンペーン別 × コンバージョンアクション別のレポート
目次
レポート自動化の手順
Microsoft広告スクリプトを使った自動化の場合は、MicrosoftとGoogleが連携していないがゆえに、OAuthやリフレッシュトークンの発行など複雑なステップを踏みました。
しかしYahoo!広告スクリプトはGoogleと連携が簡単であるため、Google広告スクリプトとほぼ手順は変わりません。
以下が、レポート自動化の手順になります。
- Yahoo!広告スクリプトとGoogleの認証をおこなう
- Yahoo!広告スクリプトを作成する
- Yahoo!広告スクリプトの定期実行設定をする
- 反映されたデータを元にレポートの型を作成する
この「Yahoo!広告スクリプトとGoogleの認証をおこなう」以外は、Google広告スクリプトと殆ど同じ手順で実行ができます。
この記事でも、「プログラミングが分からない」という方でも分かりやすいように紹介しているのでご安心ください。
Yahoo!広告スクリプトとは?
Yahoo!広告スクリプトも、Google広告スクリプトやMicrosoft広告スクリプトと同様、JavaScriptベースで広告アカウントを自由に操作することができる機能です。
Yahoo!広告スクリプトは、Google広告スクリプトに似せた作りになっているため、利用できる機能も近く、Google広告のレポートを自動化できるなら、Yahoo!広告の方も自動化できると思います。
注意点としては、Yahoo!広告スクリプトの方が利用しているサーバーが弱いせいか、Google広告スクリプトに比べ実行時間が長いです。
そのため、実行前には入念なデバッグをおこなっておかないと、待機時間のせいで多くの時間を無駄にしてしまう可能性があります。
今回紹介するコードも丸々コピペはできないので、手順に沿って問題なく設定できているか、しっかり確認しましょう。
Yahoo!広告スクリプトでできること・できないこと
Yahoo!広告スクリプトも、GoogleやMicrosoftと同様、アカウント上の操作はほぼ全てできると言っても過言ではありません。
またYahoo!広告スクリプトはGoogleアプリケーションとの連携が柔軟にできるため、Googleドライブへのアクセスや、今回紹介するスプレッドシートとの連携も容易にできます。
一方でGoogle以外のアプリケーションとの連携は殆どできないため、何かしら外部のアプリケーションと連携する等したい場合は、一度Googleドライブやスプレッドシートにデータを送った上で、Yahoo!広告スクリプトを通じてそれらを取得する流れになります。
私の場合、オフラインコンバージョンのインポートはYahoo!広告スクリプトを使って行うこともあります。
Yahoo!広告の方が、Google広告に比べて機能面で劣るものが多いため、Yahoo!広告スクリプトの方が利用用途は多いのではないでしょうか。
Yahoo!広告スクリプトの作成手順
Yahoo!広告スクリプトとGoogleを連携
まずはYahoo!広告スクリプトの作成画面にアクセスします。
右上のスパナマーク「ツール」から、運用支援セクションの「Yahoo!広告スクリプト」をクリックします。
次に、Google広告スクリプトと違って、先述の通りYahoo!広告スクリプトとGoogleを連携する必要があります。
そのため、いきなり「新規作成」をクリックするのではなく、右上の歯車マーク「外部ツール連携」をクリックします。
すると、接続先「Google」、連携列にある「Sign in with Google」というボタンがあります。
このボタンをクリックすると、お決まりの認証画面に進みます。
注意点としては、この連携するGoogleアカウントは、スプレッドシートの編集権限も必要になります。
レポートを出力するスプレッドシートを用意する
次にレポートを出力するスプレッドシートを用意します。
用意したら、スプレッドシートのIDとシート名をメモしておきます。
シートIDはスプレッドシートのURLにおける以下の部分です。
またシート名は、デフォルトで「シート1」や「シート2」となる部分です。
デフォルトの値を入れると、あとで面倒なことになりがちなので、ここでは「raw」というシート名であることを前提に進めます。
IDとシート名、それぞれメモが完了したら次の手順に進みます。
サンプルコードを貼付け、ID・シート名を修正する
Yahoo!広告スクリプトの画面に戻り、「新規作成」ボタンを押します。
画面が遷移したら、まずスクリプトの名前を決めましょう。(例:DailyReportなど)
そしてその下のコードエリアに、以下のコードを貼り付けます。
function main() {
reportDataToSpreadsheet();
}
function reportDataToSpreadsheet(){
const spreadsheetId = '*****シートIDを入れる*****';
const sheetName = 'raw';
const ss = SpreadsheetApp.openById(spreadsheetId);
let sh = ss.getSheetByName(sheetName);
sh.clear();
const reportData = AdsUtilities.getSearchReport({
accountId: AdsUtilities.getCurrentAccountId(),
fields: [
'DAY','CAMPAIGN_NAME','IMPS','CLICKS','COST'],
reportDateRangeType: 'ALL_TIME',
reportType: 'CAMPAIGN',
reportSkipColumnHeader : "FALSE",
}).reports[0].rows;
sh.getRange('A1').setValues(reportData);
}
このコードを貼り付けたら1箇所だけ変更を行います。
6行目にある以下の部分を、先ほど用意したIDに設定します。
const spreadsheetId = '1CEXxRTi4GBa1CAifNtItdZ4tQOaZBJPjgLbf-hGTKos';
また今回はシート名が「raw」の前提ですが、もし別の名前を指定したい場合は、その下の1行に修正を加えます。
const sheetName = '任意の名前'; //サンプルコードではraw
注意点は、IDのシート名も、''で囲うことを忘れないでください。
''で囲わないとエラーが発生します。
指標や期間などのカスタマイズ
このレポートで取得するフィールドは、以下の部分で指定をしています。
fields: [
'DAY','CAMPAIGN_NAME','IMPS','CLICKS','COST'],
またこちらのコードでは、「全ての期間」のデータを取得するようになっています。
例えば、さらに「コンバージョンの価値を取得したい」という場合は、このfieldsにCONV_VALUEを追加するだけです。
fields: [
'DAY','CAMPAIGN_NAME','IMPS','CLICKS','COST','CONV_VALUE'], //CONV_VALUEを追加
追加する際はカンマで区切り、先述の通り''を忘れないようにしましょう。
どのようなfieldsが使えるかは、公式ヘルプで確認することができます。
またこのレポートでは期間を以下のように設定しています。
reportDateRangeType: 'ALL_TIME',
この部分も公式ヘルプを参考すれば修正ができると思います。
例えば、2024年1月から2024年6月末まのデータが取得したい場合は、以下のようになります。
reportDateRangeType:'CUSTOM_DATE', //CUSTOM_DATEを指定
dateRange: {
startDate: '20240101',
endDate: '20240630'
},
このあたりのJavaScriptの記述ルールや、関数の仕組みが分からないという場合は、ぜひデジマナビの「ウェブサイトの基礎知識」コースを受講してみてください。
実行スケジュールの設定
Yahoo!広告スクリプトの実行頻度を編集する
あとは実行スケジュールの設定をすれば、スクリプト側の設定は完了です。
Yahoo!広告スクリプトを保存したら、スクリプトの一覧画面に戻ります。
「実行頻度」という列があるので、「未設定」の鉛筆マークをクリックします。
すると、定期実行編集画面に移ります。
Google広告スクリプトと同様、以下の5つの頻度から選ぶことができます。
- 1時間ごと
- 1回のみ
- 毎日
- 毎週
- 月1回
注意点としては、もしGoogle広告スクリプトを使ってスプレッドシートを操作している場合、その時間と同じ時間にならないようにしましょう。
非常に薄い確率ではありますが、それぞれのスクリプトが同時に操作した場合、予期せぬエラーが発生する可能性があります。
出力先のスプレッドシートで関数を組む
最後に、出力先のスプレッドシートで、出力されたデータを元にレポート作成しましょう。
レポートを作成する際は、様々な条件でデータの合算の制御をかけられるSUMIFS関数を用いることをおすすめします。
またIF関数を使うことで、計算対象外の日付を空白で返すことで、レポート全体をスッキリさせることができます。
以下がスプレッドシートでのサンプルコードです。
$B5の日付データを参照して、レポートを集計することができます。
コンバージョンアクション別のレポート
コンバージョンアクション用シートを新規作成
電話とフォームなど、複数のコンバージョンポイントを設定している場合、そのコンバージョンポイントごとに成果を見たいケースがあると思います。
コンバージョンアクションごとのレポートを作成すると、表示回数やクリックなどのデータが出力されなくなってしまうため、先述のシートとは別のシートを作成する必要があります。※同じスプレッドシートでOK
今回は「rawCv」というシート名を用いて、解説を進めていきます。
新しいコードを追記する
先ほど紹介したサンプルコードでは、mainという関数の中で、reportDataToSpreadsheetという関数を実行しています。
新たにコンバージョンアクション用にreportConversionDataToSpreadsheetという関数を作成し、こちらもmain関数内で実行されるように変更します。
function main() {
reportDataToSpreadsheet();
reportConversionDataToSpreadsheet();
}
あとは、先ほど紹介したサンプルコードのように、IDやシート名などを指定するだけです。
function reportConversionDataToSpreadsheet(){
const spreadsheetId = '*****シートIDを入れる*****';
const sheetName = 'rawCv';
const ss = SpreadsheetApp.openById(spreadsheetId);
let sh = ss.getSheetByName(sheetName);
if (!sh) {
sh = ss.insertSheet(sheetName);
} else {
sh.clear();
}
const conversionData = AdsUtilities.getSearchReport({
accountId: AdsUtilities.getCurrentAccountId(),
fields: [
'DAY','CAMPAIGN_NAME','CONVERSION_NAME','CONVERSIONS'],
reportDateRangeType: 'ALL_TIME',
reportType: 'CAMPAIGN',
reportSkipColumnHeader : "FALSE",
}).reports[0].rows;
sh.getRange(1, 1, conversionData.length, conversionData[0].length).setValues(conversionData);
}
繰り返しになりますが、rawCvの部分は任意のシート名に変更しても問題ありません。
また必要に応じてfieldsやreportDateRangeTypeなども変更してみてください。
コンバージョンアクション別のコードを追加後の全体像は以下のようになります。
function main() {
reportDataToSpreadsheet();
reportConversionDataToSpreadsheet();
}
function reportDataToSpreadsheet(){
const spreadsheetId = '*****シートIDを入れる*****';
const sheetName = 'raw';
const ss = SpreadsheetApp.openById(spreadsheetId);
let sh = ss.getSheetByName(sheetName);
sh.clear();
const reportData = AdsUtilities.getSearchReport({
accountId: AdsUtilities.getCurrentAccountId(),
fields: [
'DAY','CAMPAIGN_NAME','IMPS','CLICKS','COST'],
reportDateRangeType: 'ALL_TIME',
reportType: 'CAMPAIGN',
reportSkipColumnHeader : "FALSE",
}).reports[0].rows;
sh.getRange('A1').setValues(reportData);
}
function reportConversionDataToSpreadsheet(){
const spreadsheetId = '*****シートIDを入れる*****';
const sheetName = 'rawCv';
const ss = SpreadsheetApp.openById(spreadsheetId);
let sh = ss.getSheetByName(sheetName);
if (!sh) {
sh = ss.insertSheet(sheetName);
} else {
sh.clear();
}
const conversionData = AdsUtilities.getSearchReport({
accountId: AdsUtilities.getCurrentAccountId(),
fields: [
'DAY','CAMPAIGN_NAME','CONVERSION_NAME','CONVERSIONS'],
reportDateRangeType: 'ALL_TIME',
reportType: 'CAMPAIGN',
reportSkipColumnHeader : "FALSE",
}).reports[0].rows;
sh.getRange(1, 1, conversionData.length, conversionData[0].length).setValues(conversionData);
}
まとめ
今回は、Yahoo!広告スクリプトを使ったデイリーレポートの自動化について解説をしました。
冒頭で紹介した通り、Yahoo!広告スクリプトは非常にGoogle広告スクリプトに似ているため、Google広告スクリプトを使い慣れている方でも取り組みやすい内容だと思います。
またYahoo!広告スクリプトの方が、Googleに比べて活用シーンが多い印象なので、大まかな使い方は把握しておいた方が良いかもしれません。
この記事が皆さんの業務効率化に貢献つながることを祈っています!