W dzisiejszym wpisie znajdziesz skrypt, który pozwoli Ci monitorować działanie kampanii, bez konieczności codziennego zaglądania na konto. Dzięki temu zaoszczędzisz czas i codziennie w formie maila otrzymasz informację o wszystkich kampaniach, które nie generują kliknięć.
Skrypt wysyła mailem informację, które konkretnie kampanie wygenerowały zero kliknięć. W mailu znajdzie się również nazwa kampanii Google Ads oraz liczba wyświetleń. W ten sposób można szybko zorientować się, które kampanie nie działają poprawnie (np. skończył się budżet, reklamy zostały odrzucone).
Skrypt został dostosowany do nowej wersji skryptów Google Ads.
Jak skonfigurować skrypt?
1. Skrypt działa na poziomie konta MCK (Narzędzia i ustawienia ⇒ Działania zbiorcze ⇒ Skrypty).
2. Skrypt wymaga autoryzacji do zarządzania kampania oraz wysyłania maili.
3. W wierszu const DATE_RANGE_TO_CHECK = ”TODAY” wybierz zakres dat, który ma być brany pod uwagę przy sprawdzaniu kampanii (w naszym przypadku jest to dzień dzisiejszy, więc wybrana wartość to TODAY; jeśli chcesz wybrać inną, w skrypcie znajdziesz inne nazwy zakresu dat, które możesz wykorzystać).
4. W wierszu const ACCOUNT_LABEL_NAME =”Nazwa-Etykiety” dodaj nazwę etykiety, którą oznaczone są konta w MCK, które będą sprawdzane (wielkość liter ma znaczenie).
5. W wierszu const RECIPIENT = ”twoj-adres-email@gmail.com” dodaj swój adres mailowy.
6. W wierszu const TITLE = ”Google Ads Script: Campaigns with zero clicks” wpisz nazwę maila.
/* Name: MCC Level Google Ads script to list accounts with campaigns with zero clicks Description: Script is checking MCC for campaigns with zero clicks on child accounts. Results are storing in log console and sending by e-mail. Version: 1.1 (16.10.2022) */ function main() { /* ======= Configure script ======== */ //Change the settings according to your preferences const RECIPIENT = "twoj-adres-email@gmail.com"; //E-mail address for sending results const DATE_RANGE_TO_CHECK = "TODAY"; //Possible values: //TODAY, YESTERDAY, LAST_7_DAYS, LAST_BUSINESS_WEEK, THIS_MONTH, LAST_MONTH, LAST_14_DAYS, LAST_30_DAYS, //THIS_WEEK_SUN_TODAY, THIS_WEEK_MON_TODAY, LAST_WEEK_SUN_SAT, LAST_WEEK_MON_SUN const ACCOUNT_LABEL_NAME = "Nazwa-Etykiety"; //Checks labeled accounts only const TITLE = "Google Ads Script: Campaigns with zero clicks"; //E-mail subject /* ======= Script Code ======== */ //Results composer const mccId = AdsApp.currentAccount().getCustomerId().replaceAll("-", ""); const accountLabels = AdsManagerApp.accountLabels().withCondition("Name = '" + ACCOUNT_LABEL_NAME + "'").get(); if (!accountLabels.hasNext()) { Logger.log("Create the label first."); } const includeLabelId = accountLabels.next().getId(); let numOfResults = 0; let htmlBody = '<html><body>' + TITLE; const date = Utilities.formatDate(new Date(), AdsApp.currentAccount().getTimeZone(), 'MMMM dd, yyyy @ hh:mma z'); htmlBody += '<br/ ><br/ >'; htmlBody += '<table border="1" width="95%" style="border-collapse:collapse;">'; htmlBody += '<tr>'; htmlBody += '<td align="left"><b>Account</b></td>'; htmlBody += '<td align="left"><b>Campaign</b></td>'; htmlBody += '<td align="center"><b>Clicks</b></td>'; htmlBody += '<td align="center"><b>Impressions</b></td>'; htmlBody += '</tr>'; //Processes accounts let accounts = AdsManagerApp.accounts().withCondition("customer_client.applied_labels CONTAINS ANY ('customers/" + mccId + "/labels/" + includeLabelId + "')").get(); while (accounts.hasNext()) { let account = accounts.next(); AdsManagerApp.select(account); processAccounts(); } //Ends E-mail body htmlBody += '</table>'; htmlBody += '<br/ >'; htmlBody += date; htmlBody += '</body></html>'; //Sends E-mail let options = {htmlBody: htmlBody}; if (numOfResults > 0 ) { MailApp.sendEmail(RECIPIENT, TITLE, TITLE, options); } //Account processing function function processAccounts() { const query = "SELECT customer.descriptive_name, customer.id, campaign.name, metrics.clicks, metrics.impressions " + "FROM campaign " + "WHERE campaign.experiment_type = 'BASE' AND campaign.status = 'ENABLED' AND metrics.clicks = 0 AND campaign.serving_status NOT IN ('ENDED') " + "AND segments.date DURING " + DATE_RANGE_TO_CHECK + " " + "ORDER BY campaign.name"; let report = AdsApp.search(query); while (report.hasNext()) { numOfResults += 1; let campaign = report.next(); let name = campaign.campaign.name; Logger.log('%s,%s,%s,%s,%s', campaign.customer.id, campaign.customer.descriptiveName, campaign.campaign.name, campaign.metrics.clicks, campaign.metrics.impressions); htmlBody += '<tr><td align="left">' + campaign.customer.descriptiveName + '</td><td align="left">' + campaign.campaign.name + '</td><td align="center">' + campaign.metrics.clicks + '</td><td align="center">' + campaign.metrics.impressions + '</td></tr>'; } } }
Przypominam, że istnieje limit dotyczący liczby jednorazowo sprawdzanych kont i wynosi on 50. W przypadku większej liczby kont, można zastosować więcej etykiet i pod każdą uruchomić ten sam skrypt.
WSPÓŁPRACA ZE MNĄ |
Od 2011 roku jako specjalista Google Ads zajmuję się prowadzeniem i optymalizacją kampanii w systemie reklamowym Google. Dotychczas przeprowadziłem ponad 2300 kampanii, których budżet przekroczył już 30 mln zł. Jeśli szukasz kogoś komu chcesz zlecić prowadzenie swoich kampanii, napisz do mnie. Pracuję tylko z firmami, które poważnie podchodzą do tematu, dlatego zapoznaj się proszę z moimi zasadami współpracy. Jeśli je akceptujesz, wyślij mi wiadomość :) |