Google広告スクリプトとは
Google広告スクリプトは、JavaScriptベースのコードをGoogle広告の管理画面上で実行できる機能です。キャンペーンの設定変更やレポート出力などを自動化し、手動では対応しきれない細かな運用を補完します。
スクリプトはGoogle広告の管理画面内に用意されたエディタで記述します。外部ツールの契約は不要で、Google広告アカウントがあれば誰でも利用できます。JavaScriptの基礎知識があれば、公式サンプルをベースにすぐに試せます。
スクリプトでできること・できないこと
スクリプトが得意なのは、「条件に応じた設定変更」と「データの収集・通知」です。たとえば、特定の指標が閾値を超えたときに入札を調整したり、毎朝の実績をスプレッドシートに書き出したりできます。
一方、スクリプトはGoogle広告APIのサブセットです。一部の機能(P-MAXキャンペーンの詳細設定など)はAPIでしか操作できないものもあります。また、1回の実行時間は30分(MCC経由は60分)に制限されています。
ソリューション機能との違い
Google広告には「スクリプト」のほかに「ルール」と「自動化ソリューション」があります。目的に応じて使い分けることが重要です。
「自動ルール」はコードなしで使えますが、条件の組み合わせや外部データとの連携には対応していません。スクリプトはその中間に位置し、適度な柔軟性と導入のしやすさを両立しています。
導入手順
スクリプトの設定は、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キャンペーンのみなど)で試してから全体に展開する段階的なアプローチが安全です。
実行頻度と処理負荷のバランス
実行頻度が高いほどリアルタイムに対応できますが、処理が重いスクリプトを高頻度で実行すると時間制限に引っかかる場合があります。処理の目的に合わせた頻度設定が重要です。
まとめ
- スクリプトはGoogle広告管理画面内で完結する。外部ツールの契約不要で、JavaScriptの基礎知識があれば今日から始められる
- 自動ルールでは難しい複雑な条件や外部連携(スプレッドシート・Gmail)が必要な場合にスクリプトが適している
- 導入時はプレビューモードを必ず活用し、小さな範囲で動作確認してから本番適用する
- 予算アラート・品質スコア記録・低パフォーマンスKW停止など、定型的な監視・最適化から始めるとリスクが低い
- ログとエラーハンドリングを実装しておくことで、スクリプトが意図せず失敗したときに早期に気づける