コピペでOK! スクリプトで広告レポートを自動作成

Yahoo!広告 スクリプトでキャンペーンの配信設定を自動化しよう

Yahoo!広告の日予算、実は状況に合わせて変更したほうがインプレッション向上に役立ちます。スプレッドシートを使って適正な予算を計算し、Yahoo!広告 スクリプトで自動で変更する方法を解説します。

広告運用業務に関わる皆さん、Yahoo!広告の1日の予算、つまり日予算を正しく変更していますか?広告予算が増額や減額したタイミングや配信ペースに合わせて日予算を調整することで、広告の成果が最大化されます。

たとえば、1か月の予算が30万円の場合、単純に考えると1日の予算は「30万円÷30日=1万円」です。しかし、この金額はあくまで平均です。日々の広告配信結果を見ながら入札を調整することで、日予算を使い切れない日もあるかもしれません。

ですが、毎日配信金額を確認して、残りの予算を残りの日数で割って日予算を変更するのはめんどくさいですよね。自動で適正予算を計算してくれて、Yahoo!広告に自動で設定&反映してくれる方法があれば、超便利だと思いませんか?

そこで、今回はGoogleスプレッドシートとYahoo!広告 スクリプトを使って日予算を自動で計算して変更する方法を解説します。Yahoo!広告 スクリプトを学んで広告運用を効率的に行っていきましょう!

Yahoo! 広告スクリプトで超時短!日予算を自動で更新

今回紹介するYahoo!広告 スクリプトを用いることで、管理画面へのログインや管理画面上での設定作業を自動化できます。今回はまず、Yahoo!検索広告の日予算設定をゴールにしましょう。

手動でレポート作成・日予算変更する場合(左)とYahoo!広告スクリプトを使用して自動化した場合(右)

Yahoo!広告の日予算変更作業を自動化するために用意するもの

今回紹介するスクリプトはYahoo!検索広告の広告配信が行われており、本連載の第4回で解説した日別レポートがスプレッドシートに出力できることが前提で動作する仕様です。今回もテスト用のスプレッドシートを以下に準備しました。必ず自分のGoogle ドライブに複製してご利用ください。

なお、日別レポートを出力するためのスクリプトは以下のものをお使いください。スクリプトを実行する際は、スプレッドシートのIDの更新を忘れないようにしてください。

function main(){
  var spreadsheet = SpreadsheetApp.openById('スプレッドシートのID');
  var sheet = spreadsheet.getSheetByName('raw');
  sheet.clear();

  var today_g = new Date();
  var yesterday_g = new Date(today_g.getTime() - (24 * 60 * 60 * 1000));
  var yesterday = Utilities.formatDate(yesterday_g, 'Asia/Tokyo', 'yyyyMMdd');
  Logger.log(yesterday);

  const accountId = AdsUtilities.getCurrentAccountId();
  const report = AdsUtilities.getSearchReport({
    accountId: accountId,
    fields: ['DAY', 'CAMPAIGN_NAME', 'CAMPAIGN_ID', 'IMPS', 'CLICKS', 'COST', 'CONVERSIONS'],
    reportDateRangeType:'CUSTOM_DATE',
    dateRange: {
        startDate: '20240101',
        endDate: yesterday
    },
    reportType: 'CAMPAIGN',
    reportSkipColumnHeader : "FALSE",
  }).reports[0].rows;

  sheet.getRange('A1').setValues(report);
}

ここから日予算の自動変更の準備に入ります。複製したスプレッドシートに戻って、以下の手順に進みましょう。

  • スプレッドシートを開き、「raw」のタブに既存のキャンペーンのデータが反映されているのを確認する
    ※事前に日別レポートを出力しておきましょう
  • 「当月予算進捗」のタブで今日の日付(C3)、開始日(B7)、終了日(C7)、キャンペーン名(D7)、予算(F7)を入力
  • 適正日予算(J7)が算出される

さて、適正日予算が算出されたら、Yahoo!広告 スクリプトのコードを準備します。以下のサンプルコードをコピーしましょう。このとき、()内の「スプレッドシートのID」は複製したスプレッドシートのIDに書き換えてください。IDはスプレッドシートのURLの「https://docs.google.com/spreadsheets/d/」から「/edit#gid=~」の間です。

function main() {
  var spreadsheet = SpreadsheetApp.openById('スプレッドシートのID');
  var sheet = spreadsheet.getSheetByName('当月予算進捗');
  var lastRow = sheet.getLastRow();
  if (lastRow == 6) {
    Logger.log('スプレッドシートにキャンペーンが存在しません.');
    return;
  }
  var range = sheet.getRange(7, 2, lastRow-6, 9).getValues();

  const accountId = AdsUtilities.getCurrentAccountId();
  let campaignArray = [];
  for (let i = 0; i < lastRow-6; i++) {
    let setCampaign = {
      accountId: accountId,
      campaignId: range[i][3],
      budget: {
        amount: range[i][8]
      },
    };
    campaignArray.push(setCampaign);
  }

  const campaignsSet = Search.CampaignService.set({
    accountId: accountId,
    operand: campaignArray,
  }).rval;

  for (let i = 0; i < campaignsSet.values.length; i++) {
    if (campaignsSet.values[i].operationSucceeded) {
      let campaign = campaignsSet.values[i].campaign;
      Logger.log('campaignId-> ' + campaign.campaignId
        + ', campaignName-> ' + campaign.campaignName + 'は更新されました。');
    } else {
      let errorList = campaignsSet.values[i].errors;
      errorList.forEach(function (element) {
        if (element.code == 'I0001' && element.details[0].requestKey.includes('campaignId')) {
          Logger.log('campaignId-> ' + element.details[0].requestValue + 'は存在しません。');
        } else if (element.code == '210307' && element.details[0].requestKey.includes('budget/amount')) {
          Logger.log('campaignId-> ' + campaignArray[i].campaignId + ' budget-> ' + element.details[0].requestValue +': キャンペーンの日予算が、広告グループまたはキーワードの入札額よりも低く設定されています。');
        } else {
          Logger.log('campaignId-> ' + campaignArray[i].campaignId + 'は更新できませんでした。');
        }
      });
    }
  }
}

スクリプト登録手順

ここから手順を説明していきます。

Yahoo!広告にログインする

まず、Yahoo!広告アカウントにログインします。
※今回はYahoo!広告の検索広告で機能するスクリプトを実行します。

Yahoo!広告アカウントにログイン

Google アカウントと連携する

※すでに連携が完了している場合はスキップしてください。
右上のメニューの「ツール」から「Yahoo!広告 スクリプト」をクリックします。

画面右上の「ツール」から「Yahoo!広告 スクリプト」をクリック

スクリプトの一覧ページが表示されました。Google アカウントと連携するために右上の「外部ツール連携」をクリックします。

「外部ツール連携」をクリック

外部ツール連携ページが表示されました。「Sign in with Google」をクリックします。

「Sign in with Google」をクリック

アカウント選択画面が表示されます。複製したスプレッドシートを所有しているGoogle アカウントをクリックします。

複製したスプレッドシートを所有するアカウントを選択

Yahoo!広告 スクリプトがGoogle アカウントにアクセスすることが求められます。問題なければ「すべて選択」にチェックを入れて「続行」をクリックします。

「すべて選択」にチェックを入れて「続行」をクリック

連携が完了するとステータス欄にチェックマークがつきます。続いて「スクリプト」タブをクリックします。

ステータス欄のチェックマークが確認できたら、次は「スクリプト」タブをクリック

スクリプトを設定

「新規作成」をクリックします。

「新規作成」をクリック

Yahoo!広告 スクリプトを登録する画面が表示されました。

スクリプト登録画面

スクリプト名を「日予算更新」として、先述したサンプルコードを記述します。スプレッドシートのIDを変更することを忘れないでください。

サンプルコードを記述

「保存」をクリックします。

「保存」をクリック

「保存」クリック後に「承認」ボタンが表示されます。「承認」をクリックします。

「承認」をクリック

Yahoo!広告へのログインが求められますので、Yahoo!広告アカウントにアクセスしたときと同じようにログインします。

アカウントにログイン

ログインが完了すると、スクリプトがYahoo!広告にアクセスすることを許可するよう求められます。「承認」をクリックします。

「承認」をクリック

スクリプト登録の画面に戻ると「実行」ボタンが現れます。「実行」をクリックします。
※実際にキャンペーンの日予算が変更されますのでご注意ください。

「実行」をクリック

ブラウザ上部でスクリプトを実行して問題ないか再確認の通知が表示されます。「OK」をクリックします。

「OK」をクリック

数十秒で実行が完了し、ステータスに成功と表示されます。

問題なく実行できればステータスは「成功」と表示される

Yahoo!広告の管理画面上でキャンペーンの日予算が変更されていることを確認して完了です。

実行スケジュールを設定

スクリプトが上手く動いたのを確認したら、次は日予算を更新する頻度を設定します。実行頻度が「未設定」となっている箇所をクリックします。

実行頻度が「未設定」のところをクリック

実行頻度を設定する画面が表示されました。

この画面から実行頻度を指定する

「毎日」にチェックをして実行したいタイミングを設定します。今回は9:00にしました。設定できたら「保存」をクリックします。

今回は毎日9:00を指定して「保存」をクリック

スクリプト一覧画面で日別レポートの実行頻度が「毎日 09:00」になっていることを確認できたら完了です。これで、定期的にレポート取得が行われるようになります。

実行頻度が「毎日 09:00」になっているか確認​

【もっと知りたい人向け】スクリプトには何が書いてあったの? サンプルコードの解説

無事に自動処理はできたでしょうか? ここから先は今回の記事で使ったサンプルコードには何が書いてあったのか、分解して解説していきます。このサンプルコードでは、以下の5つの処理を行っています。

  1. スプレッドシートの情報を取得
  2. シートにキャンペーン情報を確認
  3. シートからキャンペーンIDと日予算を取得し変更するキャンペーンを指定
  4. 指定したキャンペーンの日予算を変更
スクリプトの記述の概要

まず、「①スプレッドシートの情報を取得」の部分はスプレッドシートから取得してくる情報を指定しています。以下のコードではスプレッドシートのIDとシート名「当月予算進捗」から情報を取得するという指示です。

var spreadsheet = SpreadsheetApp.openById('スプレッドシートのID');
var sheet = spreadsheet.getSheetByName('当月予算進捗');

次に、「②シートにキャンペーン情報を確認」の「getRange」では、スプレッドシートのデータの取得範囲を指定しています。

var lastRow = sheet.getLastRow();
  if (lastRow == 6) {
    Logger.log('スプレッドシートにキャンペーンが存在しません.');
    return;
  }
  var range = sheet.getRange(7, 2, lastRow-6, 9).getValues();

データ取得範囲は「getRange(開始行, 開始列, 行数, 列数)」と表すことができ、開始の行列とそれを起点とした範囲を指定します。今回は「getRange(7, 2, lastRow-6, 9)」と記述していますので、下図のような指定をしています。

7行目の2列目(B)から、最終行(7行)からマイナス6行目、つまり1行分の10列目(J)までを指定している

次の「③シートからキャンペーンIDと日予算を取得し変更するキャンペーンを指定」では、取得した範囲の中で特定の要素を指定してデータを取得し、日予算を更新するための型に当てはめています。

const accountId = AdsUtilities.getCurrentAccountId();
  let campaignArray = [];
  for (let i = 0; i < lastRow-6; i++) {
    let setCampaign = {
      accountId: accountId,
      campaignId: range[i][3],
      budget: {
        amount: range[i][8]
      },
    };
    campaignArray.push(setCampaign);
  }

ここで使用している「range」では、「getRange」で取得した範囲の中で、さらに特定の要素を指定します。表記は「range[縦方向の位置][横方向の位置]」です。注意点として、位置を指定する際の値が0から始まることが挙げられます。今回は、以下のような記述で指定しています。

range[0][3]…キャンペーンID
range[0][8]…適正日予算

「range」で指定している要素

「getRange」や「range」の処理を理解することで、「当月予算進捗」シートに行や列の追加した場合でも、スクリプトを柔軟に変更できるようになったのではないでしょうか。なお、本スクリプトでは1キャンペーンのみの変更を行っていますが、8行目以降にキャンペーンを追加した場合は複数キャンペーンの日予算変更にも対応できます。

Yahoo!広告 スクリプトの作成に困ったら

LINEヤフー社では、Yahoo!広告 スクリプト Developer CenterでYahoo!広告 スクリプトに関する情報を発信しています。

サンプルスクリプトも充実していますので、是非参考にしてみてください。

Yahoo!広告 スクリプトDeveloper Center

まとめ

Yahoo!広告 スクリプトでは、広告運用において重要な作業の一つである日予算変更を自動化することが可能です。特に複数キャンペーンを運用している場合、設定しようとした日予算を誤って別のキャンペーンに適用してしまうこともあるかもしれません。設定を自動化することで属人性を排除することができ、仕組みに頼った広告運用を実現できます。
Yahoo!広告 スクリプトを活用して、日々のレポート作成作業や管理画面の操作を効率化していきましょう。

この記事が役に立ったらシェア!
メルマガの登録はこちら Web担当者に役立つ情報をサクッとゲット!

人気記事トップ10(過去7日間)

今日の用語

アクセス解析
Webサイトにアクセスしてきたユーザーのデータを分析すること。それによってサイト ...→用語集へ

インフォメーション

RSSフィード


Web担を応援して支えてくださっている企業さま [各サービス/製品の紹介はこちらから]