Kampanya Bütçelerini Yönetmek için Google Reklam Komut Dosyası
Yayınlanan: 2021-10-23Bugün, Google Ads'i kullanan reklamverenler olarak, kampanya(lar) ile belirli bir bütçeyi yönetmek evrensel bir mücadeledir. Kullanıcı arayüzündeki seçenekleriniz tekildir: saatlik hariç tutan bir kural belirleyin. Benim sorum neden? 2019'da bir sayfa aracılığıyla kampanya düzeyinde yönetilecek bir komut dosyasına sahip olmak harika olmaz mıydı? Biraz zaman aldı ama anladım ki aşağıda göreceksiniz. Birden çok kampanyada bir sayfa ile tek bir komut dosyasında bütçeleri yönetme yeteneği.
Senaryoya devam etmeden önce, bütçe yönetimi için harika olmadıklarını söylememek için kurallar ayarladıysanız, bir bütçeye dayalı olarak kampanyalarınızı duraklatmak veya etkinleştirmek için zaman ayarı sınırlamaları olan bir kuralın nasıl oluşturulacağına ilişkin bir örnek: kampanyalar. Otomatik kurallarla ek ayrıntıları burada bulabilirsiniz.
- Google Ads hesabınızda oturum açın.
- Kampanyalar , Reklam Grupları veya Anahtar Kelimeler sayfalarına gidin.
- İstatistik tablosunun üzerindeki 3 nokta simgesini tıklayın.
- Otomatik kural oluştur'u seçin.
- "Kural türü" açılır menüsünden Duraklat veya Etkinleştir'i seçin.
- Hangi Kampanya Türünü seçin
- Bir koşul eklemek için, "Koşul" altında +EKLE 'yi tıklayın.
- Kuralınızın sıklığını Bir Kez, Günlük, Haftalık veya Aylık olarak tanımlayın.
- Kuralınızı etkileyen konularda almak istediğiniz e-posta güncellemelerinin türünü seçin.
- Kuralınızı adlandırın.
- Kuralınızı istediğiniz gibi çalışacak şekilde ayarladığınızdan emin olmak için Önizleme'ye tıklayın. Önizleme yalnızca doğrulama amaçlıdır ve hesabınızda kalıcı bir değişiklik yapmaz.
- İşiniz bittiğinde, Kuralı kaydet 'i tıklayın .
Kuralların faydaları var, bence bütçe uğruna, o kadar da değerli değil. Bu da bize araçlar için ödeme yapmak ve veya Google'ın API'si ile çalışan bazı süslü komut dosyaları veya dahili platform oluşturmak için bir geliştirici veya mühendise sahip olmak zorunda bırakıyor. Ya bu kaynaklara erişimim yoksa ve tek yapmak istediğim bir reklamcı olmaksa? Yapamam, PPC Hero Kitaplığında bulabileceğiniz tüm UI değişiklikleri ve geliştirmeleri hakkında güncel kalmayı dahil etmek için kodlama ve API şeylerini öğrenmem gerekiyor.
Neden okuyorsunuz ve senaryonun nasıl çalıştığı.
Bu komut dosyası, bütçenizi bir google sayfası aracılığıyla saat bazında kampanya düzeyinde yönetir, böylece ölçeklendirebilirsiniz. Bildiğim kadarıyla web'i taradım, bu halk için ilk. Orijinal senaryoyu ben yazmadım. Hangisi burada Google tarafından bulunabilir. 1 yıllık bir süre boyunca çok sayıda deneme yanılma ile bir sürü şeyi sildim ve teklifler yerine bütçeleri yönetmesini sağlamak için birkaç şeyi yeniden çalıştım.
Senaryo, bütçelerinizi belirleme ve mantıklı bir şekilde onları unutma esnekliği sağlar. Çıldırmak istiyorsanız, benim yaptığımı yapabilir ve bu betiği birkaç özel google sayfası ile pacing betiği ile kullanabilirsiniz, böylece kendi bütçe yönetimi aracınız ve teklif vereniniz olur. Biri bu işi yapmak için bir alet yapıp milyonlarca dolar kazanabiliyorsa, bunu yapmanın ücretsiz bir yolu olmalı diye düşündüm.
Bu komut dosyasını yazmanın daha iyi bir yolu olduğundan eminim, neredeyse eminim ve bunu MM düzeyinde birden fazla hesabı yönetmek için yapmanın bir yolu olduğundan da eminim. Bunu anlayamadım. Bunu gören geliştiriciler veya mühendisler için bu komut dosyasında ayarlamalar yapmak ve kendi geliştirmelerinizle MM düzeyinde ücretsiz bir sürümü paylaşmak harika olurdu.
Komut dosyası nasıl kurulur
Komut dosyasını çalıştırmadan önce burada değiştirmeniz gereken birkaç şey var.
- Yeni bir Google E-Tablosu oluşturun. Burası, komut dosyasının hangi kampanyaların Duraklatılacağını veya Duraklatılacağını Bileceği yerdir, yeni bir sayfa oluşturduktan sonra URL'yi kopyalayın.
- Sekme adınızın "Kurallar" olarak ayarlandığından emin olun, değilse lütfen "Kuralların Sekme Adınız ne olursa olsun değiştirildiği bu satırı güncellediğinizden emin olun: var spreadsheetAccess = new SpreadsheetAccess(SPREADSHEET_URL, " Rules ")
- Hala Google E-Tablolar'da çalışıyorsanız, 2. Satırı "000-000-0000" hesap numaranızla güncelleyin ve kendinizinkiyle değiştirin.
- Satır 3, 7 gün, 1 hafta veya bir ay sonra yürütmek istiyorsanız, komut dosyanızın çalıştırılacağı zaman aralığı referansıdır. Bütçelerinizi kontrol etme hedefinizle ilgili olduğundan, bu satır için geçerli girdiler için aşağıdaki tabloya bakın.
- 6. satır, C sütunundan başlayarak, o dönem için bütçelerinizi eklemek isteyeceksiniz.
- Son olarak, 6. satır D sütununda kampanyalarınızı listelemek isteyeceksiniz.
Umarım bu, bütçelerinizi daha iyi kontrol etmenize yardımcı olur. Neredeyse campaign.enable için komut campaign.pause değiştirmek ve senaryoyu çoğaltmak ve kampanyaları etkinleştirmek için başka bir komut dosyası oluşturmak istiyorsanız basit bir formül ayarlayabilirsiniz, unuttum.
Senaryo
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; } }