· 10分で読める

Google広告スクリプト入門|自動化できること・導入手順・実用テンプレート

目次閉じる開く

Google広告スクリプトとは

Google広告スクリプトは、JavaScriptベースのコードをGoogle広告の管理画面上で実行できる機能です。キャンペーンの設定変更やレポート出力などを自動化し、手動では対応しきれない細かな運用を補完します。

Google広告スクリプト 全体像スクリプトエディタ管理画面内で記述JavaScript実行トリガー手動 / 時間指定(最短1時間ごと)処理・出力入札・予算・広告の変更スプレッドシート・メール通知スクリプトが操作できる主な対象キャンペーン広告グループキーワード広告・入札外部連携※ MCC(管理者アカウント)からは複数アカウントを横断して実行可能

スクリプトはGoogle広告の管理画面内に用意されたエディタで記述します。外部ツールの契約は不要で、Google広告アカウントがあれば誰でも利用できます。JavaScriptの基礎知識があれば、公式サンプルをベースにすぐに試せます。

スクリプトでできること・できないこと

スクリプトが得意なのは、「条件に応じた設定変更」と「データの収集・通知」です。たとえば、特定の指標が閾値を超えたときに入札を調整したり、毎朝の実績をスプレッドシートに書き出したりできます。

一方、スクリプトはGoogle広告APIのサブセットです。一部の機能(P-MAXキャンペーンの詳細設定など)はAPIでしか操作できないものもあります。また、1回の実行時間は30分(MCC経由は60分)に制限されています。

ソリューション機能との違い

Google広告には「スクリプト」のほかに「ルール」と「自動化ソリューション」があります。目的に応じて使い分けることが重要です。

自動化機能の比較機能コード不要柔軟性外部連携自動ルール△(条件が限定的)スクリプト△(JS必要)◎(Sheets等)Google広告API(開発者向け)✕(要開発)◎(フル機能)

「自動ルール」はコードなしで使えますが、条件の組み合わせや外部データとの連携には対応していません。スクリプトはその中間に位置し、適度な柔軟性と導入のしやすさを両立しています。

導入手順

スクリプトの設定は、Google広告の管理画面から数ステップで完了します。初回は権限の承認が必要ですが、それ以降はスムーズに動作します。

エディタを開く

Google広告の管理画面にログインし、左側のナビゲーションから「ツールと設定」→「一括操作」→「スクリプト」を選択します。「+」ボタンをクリックすると新しいスクリプトエディタが開きます。

エディタ画面では、左側にコードを記述し、右側でログを確認できます。「プレビュー」ボタンを使うと、実際の変更を加えずに動作確認ができます。本番適用前に必ずプレビューを実行する習慣をつけましょう。

スケジュールと権限を設定する

スクリプトを保存したら、実行頻度を設定します。選択できる頻度は「1時間ごと」「1日1回」「1週間に1回」「1か月に1回」です。

初回実行時には、Googleアカウントの権限承認画面が表示されます。スプレッドシートやGmailと連携するスクリプトの場合は、それらへのアクセス権限も合わせて承認します。権限の範囲はスクリプトのコードによって決まります。

MCCからの一括実行

MCC(管理者アカウント)を使っている場合は、複数のアカウントに対して同一スクリプトを一括実行できます。MCCレベルのスクリプトエディタから設定し、対象アカウントを選択するだけです。

アカウント数が多い場合、1アカウントあたりの処理時間を短くする設計が重要です。処理が重いスクリプトは実行時間の上限に達することがあります。

実用テンプレート5選

ここでは、現場でよく使われるスクリプトのパターンを5つ紹介します。いずれも公式サンプルやコミュニティで広く共有されているものをベースにしています。

① 予算超過アラート

日次予算に対して実際の支出が一定割合を超えたとき、メールで通知するスクリプトです。予期せぬ急激な支出増加を早期に把握できます。

function main() {
  var THRESHOLD = 0.9; // 予算の90%を超えたら通知
  var campaigns = AdsApp.campaigns()
    .withCondition('Status = ENABLED')
    .get();

  while (campaigns.hasNext()) {
    var campaign = campaigns.next();
    var budget = campaign.getBudget().getAmount();
    var cost = campaign.getStatsFor('TODAY').getCost();

    if (budget > 0 && cost / budget >= THRESHOLD) {
      MailApp.sendEmail({
        to: 'your@email.com',
        subject: '[アラート] 予算超過: ' + campaign.getName(),
        body: '本日の消化額: ' + cost + ' / 予算: ' + budget
      });
    }
  }
}

② 品質スコアレポートをスプレッドシートに出力

キーワードの品質スコアを毎週スプレッドシートに記録するスクリプトです。品質スコアの推移を時系列で把握したいときに便利です。

function main() {
  var SPREADSHEET_URL = 'https://docs.google.com/spreadsheets/d/XXXX';
  var sheet = SpreadsheetApp
    .openByUrl(SPREADSHEET_URL)
    .getActiveSheet();
  var today = new Date().toLocaleDateString('ja-JP');

  var keywords = AdsApp.keywords()
    .withCondition('Status = ENABLED')
    .get();

  while (keywords.hasNext()) {
    var kw = keywords.next();
    sheet.appendRow([
      today,
      kw.getText(),
      kw.getQualityScore(),
      kw.getAdGroup().getName(),
      kw.getCampaign().getName()
    ]);
  }
}

③ 低パフォーマンスキーワードの一時停止

一定期間内にクリックがなく、インプレッションだけが積み上がっているキーワードを自動で一時停止するスクリプトです。

function main() {
  var keywords = AdsApp.keywords()
    .withCondition('Impressions > 500')
    .withCondition('Clicks = 0')
    .forDateRange('LAST_30_DAYS')
    .withCondition('Status = ENABLED')
    .get();

  while (keywords.hasNext()) {
    keywords.next().pause();
  }
}

実行前に必ずプレビューで対象キーワードを確認してください。意図しないキーワードが停止されないよう、条件は慎重に設定します。

④ 曜日・時間帯別の入札調整

曜日や時間帯に応じて入札調整率を自動変更するスクリプトです。手動で管理しにくい細かい時間帯別の最適化に活用できます。

function main() {
  var hour = new Date().getHours();
  var day = new Date().getDay(); // 0=日, 6=土

  var multiplier = 1.0;
  if (day >= 1 && day <= 5 && hour >= 9 && hour < 18) {
    multiplier = 1.2; // 平日日中は入札を上げる
  } else if (day === 0 || day === 6) {
    multiplier = 0.8; // 週末は入札を下げる
  }

  var campaigns = AdsApp.campaigns()
    .withCondition('Status = ENABLED')
    .get();

  while (campaigns.hasNext()) {
    campaigns.next().getBidModifier(); // 実際の変更はcampaign.setBidModifier(multiplier)
  }
}

⑤ 競合の入札状況モニタリング

オークション インサイトのデータを定期取得し、競合の表示シェアをスプレッドシートに記録するスクリプトです。競合状況の変化を継続的に把握できます。

このパターンはAdsApp.report()を使ったAWQLクエリで実装します。取得できるデータはGoogle広告のレポートAPIで提供されているものに限られます。

スクリプト運用のポイント

スクリプトは一度設定すれば終わりではなく、定期的な見直しが必要です。アカウント構成の変更やGoogle広告の仕様変更によって、スクリプトが意図どおりに動作しなくなることがあります。

ログとエラーハンドリング

Logger.log()を使ってスクリプトの実行ログを残す習慣をつけましょう。エラーが発生したときに原因を特定しやすくなります。

Logger.log('処理開始: ' + new Date());
Logger.log('対象キャンペーン数: ' + count);

try-catch構文でエラーをキャッチし、メール通知する設計にしておくと、スクリプトが失敗しても気づけます。無言で失敗するスクリプトは運用上のリスクになります。

プレビューモードの活用

スクリプトを本番適用する前に、必ずプレビューモードで動作確認します。プレビューモードでは実際のデータへの書き込みが行われないため、安全に動作を検証できます。

変更件数が多い場合は、まず小さな範囲(1キャンペーンのみなど)で試してから全体に展開する段階的なアプローチが安全です。

実行頻度と処理負荷のバランス

スクリプトの実行頻度と用途の目安1時間ごと・予算アラート・入札調整・在庫連動制御リアルタイム性が重要な処理処理は軽量に設計すること1日1回・日次レポート・品質スコア記録・低品質KW停止日次の定点観測や軽微な最適化最もよく使われる実行頻度週1回・週次サマリー・競合動向レポート・KW棚卸し週次レビュー向けのまとめ処理処理量が多いスクリプト向け月1回・月次レポート・大規模集計・構造チェック重い処理や月次集計向け実行時間の余裕がある

実行頻度が高いほどリアルタイムに対応できますが、処理が重いスクリプトを高頻度で実行すると時間制限に引っかかる場合があります。処理の目的に合わせた頻度設定が重要です。

まとめ

  • スクリプトはGoogle広告管理画面内で完結する。外部ツールの契約不要で、JavaScriptの基礎知識があれば今日から始められる
  • 自動ルールでは難しい複雑な条件や外部連携(スプレッドシート・Gmail)が必要な場合にスクリプトが適している
  • 導入時はプレビューモードを必ず活用し、小さな範囲で動作確認してから本番適用する
  • 予算アラート・品質スコア記録・低パフォーマンスKW停止など、定型的な監視・最適化から始めるとリスクが低い
  • ログとエラーハンドリングを実装しておくことで、スクリプトが意図せず失敗したときに早期に気づける

関連記事

この記事をAIと深掘りする

要約・疑問の解消に。記事のタイトル・URL・参照元を入れた質問文が自動で入力されます。

| 共有 はてブ

SIGNALZ メルマガ

厳選した実践ナレッジを週1回お届けします。

SIGNALZ

SIGNALZ

運用型広告の実務経験をもとに、体系的なナレッジを発信しています。

SIGNALZの記事はAIを活用して作成し、10年以上の運用型広告の実務経験をもとに内容を確認・監修しています。制作方針の詳細はサイトについてをご覧ください。

この記事について感想やご質問を送れます

誤りの指摘、補足情報、ご質問など、お気軽にどうぞ。