Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- SCRIPT CONTROLLO ACCOUNT GOOGLE ADS
- ---------------------------------------
- CREDITS: Frederick Vallaeys - Optmyzr Inc. 2016-2017 -
- Localizzazione ITA Google Advanced (https://www.facebook.com/groups/gadvanced/)
- Versione originale ENG: (https://bitbucket.org/snippets/fvallaeys/nLEoj/check-if-account-is-offline)
- Articolo originale: (https://www.ppchero.com/view-the-adwords-script-that-alerts-you-when-your-account-is-down/)
- Questo script controlla se l'account Google Ads è andato offline, per motivi legati a insufficienza di fondi, problemi di pagamento
- o sospensioni/problemi generali.
- Questo avviene attraverso il controllo di una metrica in particolare, se ha un risultato intero positivo maggiore di zero in una
- finestra temporale indicata da una variabile, che possiamo scegliere.
- Come utilizzare questo script:
- 1. aggiorniamo il valore "EMAIL_ADDRESS_TO_NOTIFY" con l'indirizzo email che riceverà la notifica. E'possibile utilizzarne più di uno separandoli da virgola senza spazi ulteriori(es "email1@gmail.com,email2@gmail.com")
- 2. aggiorniamo il valore di "NUM_HOURS_TO_CHECK" sulla base dei settaggi della nostra campagna. Il default è 12 (ore)
- 3. aggiorniamo il valore di 'METRIC_TO_CHECK' per scegliere la metrica di analisi che preferiamo. Default è "Impressions" ma possiamo scegliere anche "Cost" o "Conversions".
- Questo script NON effettua modifiche sull'account. Il team di Google Advanced NON è responsabile per eventuali danni o malfunzionamenti. Usa questo script a tuo rischio.
- Original Code Last Updated May 9, 2017 -
- */
- var EMAIL_ADDRESS_TO_NOTIFY = "tuaemailqui@gmail.com";
- var NUM_HOURS_TO_CHECK = 12;
- var METRIC_TO_CHECK = "Impressions";
- var DEBUG = 0;
- Date.prototype.yyyymmdd = function() {
- var yyyy = this.getFullYear().toString();
- var mm = (this.getMonth()+1).toString();
- var dd = this.getDate().toString();
- return yyyy + (mm[1]?mm:"0"+mm[0]) + (dd[1]?dd:"0"+dd[0]);
- };
- function getDateRangeYesterdayToToday() {
- var currentDate = new Date();
- var tempDate = new Date();
- tempDate.setDate(tempDate.getDate()-1);
- var yesterdayDate = tempDate;
- return yesterdayDate.yyyymmdd() + "," + currentDate.yyyymmdd();
- }
- function sendEmailNotifications(emailAddresses, subject, body, emailType ) {
- if(emailType.toLowerCase().indexOf("warning") != -1) {
- var finalSubject = "[WARNING] " + subject + " - " + AdWordsApp.currentAccount().getName() + " (" + AdWordsApp.currentAccount().getCustomerId() + ")"
- } else if(emailType.toLowerCase().indexOf("notification") != -1) {
- var finalSubject = "[NOTIFICA] " + subject + " - " + AdWordsApp.currentAccount().getName() + " (" + AdWordsApp.currentAccount().getCustomerId() + ")"
- }
- var finalBody = body;
- MailApp.sendEmail({
- to:emailAddresses,
- subject: finalSubject,
- htmlBody: finalBody
- });
- if(DEBUG == 1) Logger.log("email inviata a " + emailAddresses + ": " + finalSubject);
- }
- function main() {
- var dateRange = getDateRangeYesterdayToToday();
- var currentDate = new Date();
- var queryText = "SELECT " + METRIC_TO_CHECK + ", DayOfWeek, HourOfDay FROM ACCOUNT_PERFORMANCE_REPORT DURING " + dateRange;
- var result = AdWordsApp.report(queryText);
- var rows = result.rows();
- var daysMapping = [];
- daysMapping["Sunday"] = 0;
- daysMapping["Monday"] = 1;
- daysMapping["Tuesday"] = 2;
- daysMapping["Wednesday"] = 3;
- daysMapping["Thursday"] = 4;
- daysMapping["Friday"] = 5;
- daysMapping["Saturday"] = 6;
- var impressionsByHour = {};
- while(rows.hasNext()) {
- var currentRow = rows.next();
- var dayFactor = daysMapping[currentRow["DayOfWeek"]];
- var hourFactor = parseFloat(currentRow["HourOfDay"]);
- var actualHour = dayFactor * 24 + hourFactor;
- if(DEBUG) Logger.log(dayFactor +","+ hourFactor + " => " + currentRow["Impressions"]);
- impressionsByHour[actualHour] = currentRow["Impressions"];
- }
- // check if an entry exists for any of the last 6 hours
- var foundEntry = false;
- var numHoursToCheck = NUM_HOURS_TO_CHECK + 1;
- for(var i=1;i<numHoursToCheck;i++){
- var tempDate = new Date(currentDate.getTime());
- tempDate.setHours(tempDate.getHours() - i);
- var hourIndexToCheck = tempDate.getDay() * 24 + tempDate.getHours();
- if(impressionsByHour[hourIndexToCheck] != undefined && impressionsByHour[hourIndexToCheck] != 0){
- foundEntry = true;
- break;
- }
- }
- if(foundEntry){
- Logger.log("Tutto ok! L'account sembra essere attivo nelle ultime " + NUM_HOURS_TO_CHECK + " ore.");
- }
- else {
- var subject = "Un Account Google non riceve impressioni!";
- var body = "L'Account Google Ads " + AdWordsApp.currentAccount().getName() + " (" + AdWordsApp.currentAccount().getCustomerId() + ") sembra non aver ricevuto impressioni nelle ultime ore. Verificare lo stato dei metodi di pagamento.";
- sendEmailNotifications(EMAIL_ADDRESS_TO_NOTIFY, subject, body, "warning");
- Logger.log("WARNING: L'account non è stato attivo nelle ultime " + NUM_HOURS_TO_CHECK + " ore.");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement