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

Google 広告の日予算はいくらが適正? スプレッドシートとスクリプトで簡単に自動で計算・変更する方法

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

突然ですが、Google 広告の1日の平均予算、つまり日予算を変更していますでしょうか? 実は、日予算は1か月の予算の消化状況を見ながら調整することで、広告の成果があがります。

たとえば、1か月の予算が30万円とします。その場合、単純に考えると1日の予算は「30万円÷30日=1万円」です。しかし、この金額はあくまで平均です。広告表示回数が少なければ8000円かもしれないし、多ければ1万2000円になるかもしれません。毎日決まった額が消化される訳ではないので、1か月後半には思ったより予算が余っていることもあるかもしれません。もし予算が余っていれば、日予算を増やして、インプレッションをとる機会を増やせますよね。

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

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

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

今回紹介するGoogle 広告スクリプトを用いることで、管理画面の日予算に関わる作業を自動化できます。

今回スクリプトでできる作業(イメージ)

今回は、管理画面上のキャンペーンの日予算の変更がゴールです。

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

今回紹介するスクリプトはGoogle 広告上でキャンペーンが作成されており、さらに本連載の第1回で作成した日別レポートがスプレッドシートに出力されていることが前提で動作する仕様です。そのため、まだ準備ができていない方は、以下の手順を踏んでください。

  • Google 広告上のキャンペーン(キャンペーン作成後、一定期間広告を回していないとデータがなく、上手く作動しないので注意)
  • 日別レポートが出力されているスプレッドシート(作り方は第1回)を参照

キャンペーンの作成方法については「Googleリスティング広告の始め方|アカウント作成~配信を画像で解説」のページにて説明しております。

※リンクは外部サイトへ飛びます。

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

  1. スプレッドシートを開き、「raw」のタブに既存のキャンペーンのデータが反映されているのを確認する
  2. 「日別レポート」のタブを開き、開始日(B1)を変更し、プルダウン(B2)からキャンペーンを選ぶ
  3. 「当月予算進捗」のタブで今日の日付(C3)、開始日(B7)、終了日(C7)、キャンペーン名(D7)、予算(E7)を入力
    ※キャンペーン名は「日別レポート」のタブから名称をコピー
  4. 適正日予算が算出される
スプレッドシートの「raw」タブに既存のキャンペーンのデータが反映されている
「日別レポート」のタブを開き、開始日(B1)を変更し、プルダウン(B2)からキャンペーンを選ぶ

さて、適正日予算が算出されたら、Google 広告スクリプトのコードを準備します。以下のサンプルコードをコピーしましょう。このとき、()内の「スプレッドシートの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();

  for (let i = 0; i < lastRow-6; i++) {
    var campaignName = range[i][2];
    var amount = range[i][7];
    const campaignIterator = AdsApp.campaigns()
          .withCondition(`campaign.name = "${campaignName}"`)
          .get();
    if (!campaignIterator.hasNext()) {
      throw new Error(` "${campaignName}"は存在しません`);
    }
    const campaign = campaignIterator.next();
    campaign.getBudget().setAmount(amount);
  }

}

スクリプトの登録手順

ここからスクリプトの登録手順を説明していきます。

Google 広告にログインする

まず、スクリプトを実行したいGoogle 広告アカウントにログインします。

ログイン直後の画面

スクリプト編集ページを開く

左側のメニューの「ツール」をクリックします。

「ツール」をクリック

「一括操作」を選択し、「スクリプト」をクリックします。

「一括操作」をクリックし、「スクリプト」をクリック

スクリプトの一覧ページが表示されました。次に、「青い+ボタン」をクリックします。

「青い+ボタン」をクリック

「新規スクリプト」をクリックします。

「新規スクリプト」をクリック
スクリプトの記述ページ

スクリプトを記述するページが表示されました。

スクリプトを設定

次は、先ほどコピーしたスクリプトを記述します。スクリプト名を「無名のスクリプト」から「日予算変更」に変更しましょう。

「無名のスクリプト」から任意のスクリプト名に書き換える

右上に表示されている「承認」ボタンをクリックします。

「承認」をクリック

別のウィンドウが開かれます。ログインアカウントをクリックします。

使用したいアカウントをクリックしてログイン
「Allow(承認)」をクリック

先述した以下のサンプルコードを記述し、右下の「プレビュー」をクリックします。

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();

  for (let i = 0; i < lastRow-6; i++) {
    var campaignName = range[i][2];
    var amount = range[i][7];
    const campaignIterator = AdsApp.campaigns()
          .withCondition(`campaign.name = "${campaignName}"`)
          .get();
    if (!campaignIterator.hasNext()) {
      throw new Error(` "${campaignName}"は存在しません`);
    }
    const campaign = campaignIterator.next();
    campaign.getBudget().setAmount(amount);
  }

}
サンプルコードを記述し、「プレビュー」をクリック

右下の「承認」をクリックします。

「承認」をクリック

別のウィンドウが開かれます。ログインアカウントをクリックします。

使用したいアカウントをクリック

「Allow(承認)」をクリックします。

「Allow(承認)」をクリック

右下の「プレビュー」を押下します。

「プレビュー」をクリック

変更内容のタブをクリックすると「予算額が¥1から¥3,529に変更されました」と表示されます。プレビューでは、管理画面上のキャンペーンには変更内容は反映されませんのでご安心ください。

変更内容が表示

日別予算が意図した通りの変更であることを確認できたら「実行」を押下します。「実行」では、管理画面上のキャンペーンに変更内容が反映されます。

「実行」をクリック

「実行」を押下するとスクリプトの一覧画面に移動します。「スクリプトの履歴」タブか、管理画面上でキャンペーンの日予算が意図通りに変更できているか確認しておきましょう。

実行スケジュールを設定

スクリプトが上手く動いたのを確認したら、次はスクリプトを実行する頻度を設定します。 スクリプトの一覧ページを表示し、「日予算変更」行の頻度列の「-(ハイフン)」をクリックします。

「-」をクリック

実行頻度や時間を設定して「保存」をクリックします。これで、定期的に日予算変更のスクリプトが実行されます。

実行頻度、時間を設定して「保存」をクリック

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

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

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

まず、「①スプレッドシートの情報を取得」の部分はスプレッドシートから取得してくる情報を指定しています。以下のコードではスプレッドシートの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行分の9列目(J)までを指定している

次の「③シートからキャンペーン名と日予算を取得」では、取得した範囲の中で特定の要素を指定してデータを取得している。

for (let i = 0; i < lastRow-6; i++) {
    var campaignName = range[i][2];
    var amount = range[i][7];

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

  • range[0][2]…キャンペーン名
  • range[0][7]…適正日予算
「range」で指定している要素

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

まとめ

日予算変更は広告の配信ペースを決定する広告運用における重要な作業の一つです。重要である一方で、適正日予算を算出できれば自動化できる作業でもあります。予算変更が頻繁に行われる場合、スピーディーに日予算を調整することが求められますが、それを手助けしてくれるのが広告スクリプトです。

広告運用は作業が膨大ですが、Google 広告スクリプトを活用することで作業効率を改善していきたいですね。

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

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

今日の用語

ディープリンク
WWW上でのリンクの張り方の1つ。サイトのトップページへのリンクではなく、個別コ ...→用語集へ

インフォメーション

RSSフィード


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