こんな人にオススメ

  • Yahoo広告のレポート作成を自動化したい
  • Looker Studio(データポータル)ではなく、スプレッドシートで関数つかって処理したい

Yahoo広告スクリプトとは

Yahoo!広告スクリプトは、Yahoo!広告の入稿や配信設定変更、レポート作成を自動化できる、JavaScriptベースの自動化支援ツールです。Googleドライブ、Googleスプレッドシートと連携したデータ入出力、Slackメッセージやメールの送信、Yahoo!天気・災害の天気予報データに基づいた広告配信などにも対応しています。
出典:https://ads-developers.yahoo.co.jp/ja/ads-script/

Javascriptで利用できるYahoo広告自動化のためのサービスです。
Yahoo天気で晴れ予報ならなら晴れの日バージョンの広告キャンペーンを、雨なら雨の日用のものを適応する。といったことができるようになります。
2023年2月15日(水)から実施されたサービスです。

利用方法

Yahoo広告スクリプトのご利用ガイドに沿って設定すれば、すぐに使えるようになります。
出力するGoogleスプレッドシートに紐づくGoogleアカウントとの連携も忘れずに。

使用するプログラム -検索広告版-

const spreadsheetId = 'スプレッドシートのID';
const sheetName = 'シートの名前';
const pastDays = 120; // 過去120日分

function formatDate(date) {
  return date.getFullYear() + ('0' + (date.getMonth() + 1)).slice(-2) + ('0' + date.getDate()).slice(-2);
}

function main() {
  const accountId = AdsUtilities.getCurrentAccountId();

  const ss = SpreadsheetApp.openById(spreadsheetId);
  let sh = ss.getSheetByName(sheetName);
  // Clear the contents of the sheet
  sh.clear();

  const today = new Date();
  const endDate = formatDate(today);
  today.setDate(today.getDate() - pastDays);
  const startDate = formatDate(today);

  const reports = AdsUtilities.getSearchReport({
    accountId: accountId,
    dateRange: {
      endDate: endDate,
      startDate: startDate,
    },
    fields: ['DAY', 'CAMPAIGN_NAME', 'CLICKS', 'IMPS', 'COST', 'CONVERSIONS'],
    reportDateRangeType: 'CUSTOM_DATE',
    reportType: 'CAMPAIGN',
    reportSkipColumnHeader : 'FALSE',
  }).reports[0].rows;
  sh.getRange('A1').setValues(reports);
}

プログラムの解説

過去のブログ記事「Google広告のレポートを定期的にスプレッドシートに出力する用のGoogle広告のスクリプト」と同じ項目でレポート出力します。

1行目と2行目でスプレッドシートの指定をします。
3行目は過去何日分のレポートを出力するか指定します。
5〜7行目は日付フォーマットをyyyyMMddにする関数。
10行目はYahoo広告のアカウントIDを取得。
12〜15行目はスプレッドシートを開いて一度全部消去。
17〜20行目は今日の日付と120日前の日付を取得してフォーマットを揃えています。
22〜30行目がレポートの中身の指定。
31行目がレポートの見出し行の作成。
32行目でレポートの中身を出力しています。

使用するプログラム -ディスプレイ広告版-

const spreadsheetId = 'スプレッドシートのID';
const sheetName = 'シートの名前';
const pastDays = 120; // 過去120日分

function formatDate(date) {
  return date.getFullYear() + ('0' + (date.getMonth() + 1)).slice(-2) + ('0' + date.getDate()).slice(-2);
}

function main() {
  const accountId = AdsUtilities.getCurrentAccountId();

  const ss = SpreadsheetApp.openById(spreadsheetId);
  let sh = ss.getSheetByName(sheetName);
  // Clear the contents of the sheet
  sh.clear();

  const today = new Date();
  const endDate = formatDate(today);
  today.setDate(today.getDate() - pastDays);
  const startDate = formatDate(today);

  const reports = AdsUtilities.getDisplayReport({
    accountId: accountId,
    dateRange: {
      endDate: endDate,
      startDate: startDate,
    },
    fields: ['DAY', 'CAMPAIGN_NAME', 'CLICK', 'IMPS', 'COST', 'CONVERSIONS'],
    reportDateRangeType: 'CUSTOM_DATE',
    reportSkipColumnHeader : 'FALSE',
  }).reports[0].rows;
  sh.getRange('A1').setValues(reports);
}

クリック数の指定がCLICKSとCLICKの違いがあったり、ディスプレイ広告では、一部のレポートを除いてreportTypeは指定しなかったり、コピペですんなり画像広告版を作成できなかった……。