MENU

Google 広告スクリプトで広告運用を自動化する

  • URLをコピーしました!

Google 広告スクリプトは数行のコードを記載するだけで、アカウント内の設定を自由自在に変更することができるツールです。広告運用を成功させるためにやることは多く、タスクの自動化は必要不可欠です。
今回は、Google 広告スクリプトを用いてどこまで自動化を進められるか整理していきます。

目次

広告運用に必要なタスク

広告運用を自動化するために、まずは広告運用に関する日々のタスクを洗い出します。
広告運用は主に以下の3点で構成されています。

  • 入稿
  • 運用(日予算や入札の調整など)
  • レポーティング

これらのタスクをさらに分解します。

入稿・運用

運用も最終的に行うアクションは入稿となるため、入稿と同一のものとして考えます。
入稿ではキャンペーン初期設定時と運用時で対応内容が異なります。
キャンペーン初期設定時、一般的には以下の項目の設定を行います。ここでは検索広告をベースに整理します。

  • キャンペーン
    • キャンペーン名
    • ステータス
    • 日予算
    • 入札戦略
    • 開始日
    • 終了日
    • デバイス
    • ネットワーク
    • 地域
    • 言語
    • URLのオプション
  • 広告グループ
    • 広告グループ名
    • ステータス
    • 入札単価
  • キーワード
    • キーワード
    • ステータス
    • 除外キーワード
  • 広告
    • タイトル
    • 説明文
    • パス
    • 最終リンク先URL
  • アセット(広告表示オプション)
    • サイトリンク
    • 構造化スニペット
    • コールアウト

広告運用時は、以下の内容に絞られます。

  • キャンペーン
    • 日予算
  • 広告グループ
    • 入札単価
  • キーワード
    • キーワード
    • ステータス
    • 除外キーワード
  • 広告
    • タイトル
    • 説明文
    • パス
    • 最終リンク先URL

優先順位では「キャンペーン・広告グループ>除外キーワード>キーワード>広告」となります。

レポーティング

レポーティングでは、一般的に以下の形式で作成することが多いのではないでしょうか。

  • 階層別
    • キャンペーン別
    • 広告グループ別
    • キーワード別
    • 検索語句
    • 広告別
  • 期間軸
    • 月別
    • 週別
    • 日別

期間別については日別のデータを取得し加工すれば、週別・月別も同時に作成できます。
階層別については、キャンペーン別・広告グループ別は同じデータソースを使えそうですが、そのほかはそれぞれ取得する必要があります。
これらのレポート項目の中で、入稿・運用に紐づくのは以下の2つになるので、優先度は高くなります。

  • 階層別
    • キーワード別
    • 検索語句別
  • 時間軸
    • 日別

スプレッドシートで管理シートを作成

前項で整理して優先度が高いと判断した階層・項目を自動で変更するために必要な機能を作成していきます。

  • 日別レポート
  • キャンペーンの日予算更新
  • 広告グループの入札単価更新

日予算の変更

日予算の変更には、日別レポートを取得するスクリプトと日予算を変更する設定が必要です。

function main () {
  // スプレッドシートを指定
  var spreadsheet = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/スプレッドシートのURL/');
  // シート名を指定
  var sheet = spreadsheet.getSheetByName('シート名');

  // レポート設定
  var report = AdsApp.report(
      "SELECT segments.date, campaign.name, metrics.impressions, metrics.clicks, metrics.cost_micros, metrics.conversions FROM campaign WHERE segments.date DURING THIS_MONTH"
  );

  // レポートの結果をスプレッドシートに書き込む
  report.exportToSheet(sheet);
}

日別レポートの取得方法の詳細については、以下の記事で解説しています。

このスクリプトを用いることで、以下のようなレポートを作成することができます。(値はサンプルです。)

レポートを取得できたら、次は設定すべき適正な日予算を算出しましょう。
スプレッドシート上にキャンペーン名・キャンペーンID・予算・開始日・終了日・推奨日予算・コストを記入する列を作成しました。

キャンペーン名・キャンペーンID・予算・開始日・終了日は手動で入力します。
コストは日別レポートを参照しています。推奨日予算は予算・開始日・終了日・コストを基に算出しています。

設定すべき日予算を算出することができたので、これらの情報を基にGoogle 広告スクリプトで入稿を行います。

function main() {
  // スプレッドシートを指定
  var spreadsheet = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/スプレッドシートのURL/');
  // シート名を指定
  var sheet = spreadsheet.getSheetByName('シート名');
  // 最終行を取得
  var lastRow = sheet.getLastRow();
  // 最終行が1行目の場合は終了
  if (lastRow == 1) {
    Logger.log('campaign does not exist.');
    return;
  }
  // 範囲を取得
  var range = sheet.getRange(2, 1, lastRow-1, 7).getValues();
  Logger.log(range);

  for (let i = 0; i < lastRow-1; i++) {
    // キャンペーンIDを取得
    var campaignId = range[i][1];
    Logger.log(campaignId);
    // 日予算を取得
    var amount = range[i][5];
    Logger.log(amount);
    // キャンペーンの存在を確認
    const campaignIterator = AdsApp.campaigns()
          .withIds([campaignId])
          .get();
    // キャンペーンが存在しない場合はアラート
    if (!campaignIterator.hasNext()) {
      throw new Error(`No campaign found with id "${campaignId}"`);
    }
    // 日予算を更新
    const campaign = campaignIterator.next();
    campaign.getBudget().setAmount(amount);
  }
}

実行結果も成功と表示されているので、正しく更新されています。

日予算の変更方法については、以下の記事で解説しています。

日別レポート取得→日予算の更新の順でGoogle 広告スクリプトを実行すれば、日予算の変更を自動で行うことができますね。

広告グループの入札単価変更

続いて、広告グループ単位で入札単価を変更する方法を解説します。
まずは入稿に必要な情報を入力したシートを用意します。

今回は、入札単価(CPC)と目標コンバージョン単価(CPA)の変更に対応したスクリプトを設定します。

function main() {
  // スプレッドシートを指定
  var spreadsheet = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/スプレッドシートのID');
  // シート名を指定
  var sheet = spreadsheet.getSheetByName('シート名');
  // 最終行を取得
  var lastRow = sheet.getLastRow();
  // 最終行が1行目の場合は終了
  if (lastRow == 1) {
    Logger.log('adgroup does not exist.');
    return;
  }
  // 範囲を取得
  var range = sheet.getRange(2, 1, lastRow-1, 3).getValues();
  Logger.log(range);

  for (let i = 0; i < lastRow-1; i++) {
    // 広告グループIDを取得
    var adgroupId = range[i][0];
    Logger.log(adgroupId);
    // 入札戦略を取得
    var strategy = range[i][1];
    Logger.log(strategy);
    // 入札単価を取得
    var bid = range[i][2];
    Logger.log(bid);
    // 広告グループの存在を確認
    const adgroupIterator = AdsApp.adGroups()
          .withIds([adgroupId])
          .get();
    // キャンペーンが存在しない場合はアラート
    if (!adgroupIterator.hasNext()) {
      throw new Error(`No adgroup found with id "${adgroupId}"`);
    }
    // 日予算を更新
    const adgroup = adgroupIterator.next();
    if (strategy === "CPC") {
    adgroup.bidding().setCpc(bid);
    }
    if (strategy === "CPA") {
    adgroup.bidding().setCpa(bid);
    }
  }
}

これで広告グループの入札単価の変更も完了です。

完全自動化の道のりは長い

Google 広告スクリプトを使って広告運用の自動化を試みてみました。今回は基本的な作業である日別レポートの取得、キャンペーン・広告グループの更新のスクリプトを解説しました。Google 広告スクリプトのスケジュール設定を用いることでそれぞれのスクリプトの実行頻度やタイミングを設定することができますので、必要に応じて設定してみてください。

キャンペーンの日予算更新においては、推奨日予算をスプレッドシートの関数で自動で算出しましたが、広告グループの入札単価は手動入力となっています。ここも関数で自動算出する余地はありそうです。これまでの作業を行動ベースで細分化することで自動化の余地を探ることができます。完全自動化の道のりは長いですが、自動化することを楽しんで開発していきたいですね。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次