キャンペーン予算を管理するためのGoogle広告スクリプト
公開: 2021-10-23今日、Google広告を利用する広告主として、キャンペーンごとに特定の予算を管理することは普遍的な闘争です。 UIのオプションは単一です。1時間ごとに除外するルールを設定します。 私の質問はなぜですか? 2019年のシートを介して、キャンペーンレベルで管理するスクリプトがあるのは素晴らしいことではないでしょうか。 少し時間がかかりましたが、私はそれを理解しました。それは以下に表示されます。 複数のキャンペーンにわたるシートを使用して、単一のスクリプトで予算を管理する機能。
スクリプトに進む前に、予算管理に適していないというルールが設定されている場合は、予算に基づいてキャンペーンを一時停止または有効にする時間制限のあるルールを作成する方法の例を次に示します。キャンペーン。 自動化されたルールを使用して、ここで追加の詳細を見つけることができます。
- Google広告アカウントにログインします。
- キャンペーン、広告グループ、またはキーワードのページに移動します。
- 統計テーブルの上にある3ドットのアイコンをクリックします。
- [自動ルールの作成]を選択します。
- [ルールの種類]ドロップダウンから[一時停止]または[有効にする]を選択します。
- キャンペーンタイプを選択してください
- 条件を追加するには、「条件」の下の「 +追加」をクリックします。
- ルールの頻度を1回、毎日、毎週、または毎月と定義します。
- ルールに影響する問題について受信する電子メール更新のタイプを選択します。
- ルールに名前を付けます。
- [プレビュー]をクリックして、希望どおりに実行するようにルールを設定したことを確認します。 プレビューは確認のためだけのものであり、アカウントに永続的な変更を加えることはありません。
- 完了したら、[ルールの保存]をクリックします。
私の考えでは、予算のためにルールには利点がありますが、それほど価値はありません。 そのため、ツールにお金を払ったり、開発者やエンジニアがGoogleのAPIと連携するいくつかの凝ったスクリプトや内部プラットフォームを構築したりする必要があります。 これらのリソースにアクセスできず、広告主になりたいだけの場合はどうなりますか? できません。PPCヒーローライブラリにあるすべてのUIの変更と拡張機能を最新の状態に保つために、コーディングとAPIのことを学ぶ必要があります。
読んでいる理由とスクリプトのしくみ。
このスクリプトは、Googleスプレッドシートを介してキャンペーンレベルで時間単位で予算を管理するため、拡張できます。 私の知る限り、そして私はウェブを精査しましたが、これは一般の人々にとって初めてのことです。 私はオリジナルのスクリプトを書きませんでした。 これはGoogleによってここで見つけることができます。 1年間で試行錯誤の多いものを削除し、入札ではなく予算を管理できるようにいくつかの作業をやり直しました。
このスクリプトを使用すると、予算を柔軟に設定し、合理的な範囲内で予算を忘れることができます。 あなたが夢中になりたいのなら、あなたは私がすることをして、あなたがあなた自身の予算管理ツールと入札者を持つように、いくつかのカスタムグーグルシートでペーシングスクリプトでこのスクリプトを使うことができます。 誰かがこのようなことをして何百万ドルも稼ぐためのツールを作ることができるなら、それをするための無料の方法がなければならないと私は考えました。
私は確かに、このスクリプトを書くためのより良い方法があり、複数のアカウントを管理するためにMCCレベルでそれを行う方法があることはほぼ確実です。 私はそれを理解していません。 開発者やエンジニアであるこれを見る人にとって、このスクリプトを調整し、MCCレベルで無料バージョンを独自の拡張機能と共有することは素晴らしいことです。
スクリプトの設定方法
ここでスクリプトを実行する前に、変更する必要のあることがいくつかあります。
- 新しいGoogleスプレッドシートを作成します。 これは、新しいシートを作成した後、スクリプトが一時停止または一時停止解除するキャンペーンを認識する場所です。URLをコピーします。
- タブ名が「ルール」に設定されていることを確認してください。そうでない場合は、次の行を更新してください。「ルールはタブ名に変更されます。varspreadsheetAccess= new SpreadsheetAccess(SPREADSHEET_URL、「ルール」)
- 引き続きGoogleスプレッドシートで作業している場合は、行2をアカウント番号「000-000-0000」に更新して自分のアカウント番号に置き換えます。
- 行3は、7日、1週間、または1か月後に実行する場合に、スクリプトを実行するための期間参照です。 この行の有効な入力については、予算の管理に関する目標に関連しているため、以下の表を参照してください。

- 行6、列Cから始めて、その期間の予算を追加する必要があります
- 最後に、行6、列Dに、キャンペーンを一覧表示します。
これがあなた方全員があなたの予算をよりよく管理するのに役立つことを願っています。 ほとんど忘れてしまった、あなたはcampaign.enableにスクリプト内campaign.pauseを変更することができますし、スクリプトを複製し、キャンペーンを有効にするには、別のスクリプトを作成したい場合は、単純な式を調整します。
脚本
var SPREADSHEET_URL = "[https://docs.google.com/spreadsheets/d/1AbldNxsSPHkE0WcOY01AoM7EimF2_7XDrvI5FeLcarY/edit#gid=0]"; var spreadsheetAccess = new SpreadsheetAccess(SPREADSHEET_URL, "Rules"); var totalColumns; function main() { var columns = spreadsheetAccess.sheet.getRange(5, 2, 5, 100).getValues()[0]; for (var i = 0; i < columns.length; i ++) { if (columns[i].length == 0 || columns[i] == 'Results') { totalColumns = i; break; } } if (columns[totalColumns] != 'Results') { spreadsheetAccess.sheet.getRange(5, totalColumns + 2, 1, 1).setValue("Results"); } // clear the results column spreadsheetAccess.sheet.getRange(6, totalColumns + 2, 1000, 1).clear(); var row = spreadsheetAccess.nextRow(); while (row != null) { var budget; try { budget = parseBudget(row); } catch (ex) { logError(ex); row = spreadsheetAccess.nextRow(); continue; } var selector = AdWordsApp.campaigns(); for (var i = 2; i < totalColumns; i ++) { var header = columns[i]; var value = row[i]; if (!isNaN(parseFloat(value)) || value.length > 0) { if (header.indexOf("'") > 0) { value = value.replace(/\'/g,"\\'"); } else if (header.indexOf("\"") > 0) { value = value.replace(/"/g,"\\\""); } var condition = header.replace('?', value); selector.withCondition(condition); } } var campaigns = selector.get(); try { campaigns.hasNext(); } catch (ex) { logError(ex); row = spreadsheetAccess.nextRow(); continue; } var fetched = 0; var changed = 0; while (campaigns.hasNext()) { var campaign = campaigns.next(); var oldCost = campaign.getStatsFor("THIS_MONTH").getCost(); var action = row[0]; var newStatus; fetched ++; if (budget <= oldCost) { campaign.pause(); changed++ } } logResult("Fetched " + fetched + "\nChanged " + changed); row = spreadsheetAccess.nextRow(); } var now = new Date(Utilities.formatDate(new Date(), AdWordsApp.currentAccount().getTimeZone(), "MMM dd,yyyy HH:mm:ss")); } function parseBudget(row) { if (row[1].length == 0) { return null; } var limit = parseFloat(row[1]); if (isNaN(limit)) { throw "Bad Argument: must be a number."; } return limit; } function logError(error) { spreadsheetAccess.sheet.getRange(spreadsheetAccess.currentRow(), totalColumns + 2, 1, 1) .setValue(error) .setFontColor('#c00') .setFontSize(8) .setFontWeight('bold'); } function logResult(result) { spreadsheetAccess.sheet.getRange(spreadsheetAccess.currentRow(), totalColumns + 2, 1, 1) .setValue(result) .setFontColor('#444') .setFontSize(8) .setFontWeight('normal'); } function SpreadsheetAccess(spreadsheetUrl, sheetName) { this.spreadsheet = SpreadsheetApp.openByUrl(spreadsheetUrl); this.sheet = this.spreadsheet.getSheetByName(sheetName); this.cells = this.sheet.getRange(6, 2, this.sheet.getMaxRows(), this.sheet.getMaxColumns()).getValues(); this.rowIndex = 0; this.nextRow = function() { for (; this.rowIndex < this.cells.length; this.rowIndex ++) { if (this.cells[this.rowIndex][0]) { return this.cells[this.rowIndex++]; } } return null; } this.currentRow = function() { return this.rowIndex + 5; } }