Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.18 KB | None | 0 0
  1. /*
  2. SCRIPT CONTROLLO ACCOUNT GOOGLE ADS
  3. ---------------------------------------
  4. CREDITS: Frederick Vallaeys - Optmyzr Inc. 2016-2017 -
  5. Localizzazione ITA Google Advanced (https://www.facebook.com/groups/gadvanced/)
  6. Versione originale ENG: (https://bitbucket.org/snippets/fvallaeys/nLEoj/check-if-account-is-offline)
  7. Articolo originale: (https://www.ppchero.com/view-the-adwords-script-that-alerts-you-when-your-account-is-down/)
  8.  
  9. Questo script controlla se l'account Google Ads è andato offline, per motivi legati a insufficienza di fondi, problemi di pagamento
  10. o sospensioni/problemi generali.
  11. Questo avviene attraverso il controllo di una metrica in particolare, se ha un risultato intero positivo maggiore di zero in una
  12. finestra temporale indicata da una variabile, che possiamo scegliere.
  13.  
  14.  
  15. Come utilizzare questo script:
  16. 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")
  17. 2. aggiorniamo il valore di "NUM_HOURS_TO_CHECK" sulla base dei settaggi della nostra campagna. Il default è 12 (ore)
  18. 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".
  19.  
  20. 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.
  21.  
  22. Original Code Last Updated May 9, 2017 -
  23. */
  24.  
  25. var EMAIL_ADDRESS_TO_NOTIFY = "tuaemailqui@gmail.com";
  26. var NUM_HOURS_TO_CHECK = 12;
  27. var METRIC_TO_CHECK = "Impressions";
  28.  
  29. var DEBUG = 0;
  30.  
  31. Date.prototype.yyyymmdd = function() {
  32. var yyyy = this.getFullYear().toString();
  33. var mm = (this.getMonth()+1).toString();
  34. var dd = this.getDate().toString();
  35. return yyyy + (mm[1]?mm:"0"+mm[0]) + (dd[1]?dd:"0"+dd[0]);
  36. };
  37.  
  38. function getDateRangeYesterdayToToday() {
  39. var currentDate = new Date();
  40.  
  41. var tempDate = new Date();
  42. tempDate.setDate(tempDate.getDate()-1);
  43.  
  44. var yesterdayDate = tempDate;
  45.  
  46. return yesterdayDate.yyyymmdd() + "," + currentDate.yyyymmdd();
  47. }
  48.  
  49. function sendEmailNotifications(emailAddresses, subject, body, emailType ) {
  50.  
  51. if(emailType.toLowerCase().indexOf("warning") != -1) {
  52. var finalSubject = "[WARNING] " + subject + " - " + AdWordsApp.currentAccount().getName() + " (" + AdWordsApp.currentAccount().getCustomerId() + ")"
  53. } else if(emailType.toLowerCase().indexOf("notification") != -1) {
  54. var finalSubject = "[NOTIFICA] " + subject + " - " + AdWordsApp.currentAccount().getName() + " (" + AdWordsApp.currentAccount().getCustomerId() + ")"
  55. }
  56.  
  57. var finalBody = body;
  58.  
  59. MailApp.sendEmail({
  60. to:emailAddresses,
  61. subject: finalSubject,
  62. htmlBody: finalBody
  63. });
  64.  
  65. if(DEBUG == 1) Logger.log("email inviata a " + emailAddresses + ": " + finalSubject);
  66.  
  67. }
  68.  
  69. function main() {
  70.  
  71. var dateRange = getDateRangeYesterdayToToday();
  72. var currentDate = new Date();
  73.  
  74. var queryText = "SELECT " + METRIC_TO_CHECK + ", DayOfWeek, HourOfDay FROM ACCOUNT_PERFORMANCE_REPORT DURING " + dateRange;
  75. var result = AdWordsApp.report(queryText);
  76. var rows = result.rows();
  77.  
  78. var daysMapping = [];
  79. daysMapping["Sunday"] = 0;
  80. daysMapping["Monday"] = 1;
  81. daysMapping["Tuesday"] = 2;
  82. daysMapping["Wednesday"] = 3;
  83. daysMapping["Thursday"] = 4;
  84. daysMapping["Friday"] = 5;
  85. daysMapping["Saturday"] = 6;
  86.  
  87. var impressionsByHour = {};
  88.  
  89. while(rows.hasNext()) {
  90. var currentRow = rows.next();
  91. var dayFactor = daysMapping[currentRow["DayOfWeek"]];
  92. var hourFactor = parseFloat(currentRow["HourOfDay"]);
  93. var actualHour = dayFactor * 24 + hourFactor;
  94. if(DEBUG) Logger.log(dayFactor +","+ hourFactor + " => " + currentRow["Impressions"]);
  95. impressionsByHour[actualHour] = currentRow["Impressions"];
  96. }
  97.  
  98. // check if an entry exists for any of the last 6 hours
  99. var foundEntry = false;
  100. var numHoursToCheck = NUM_HOURS_TO_CHECK + 1;
  101. for(var i=1;i<numHoursToCheck;i++){
  102. var tempDate = new Date(currentDate.getTime());
  103. tempDate.setHours(tempDate.getHours() - i);
  104. var hourIndexToCheck = tempDate.getDay() * 24 + tempDate.getHours();
  105. if(impressionsByHour[hourIndexToCheck] != undefined && impressionsByHour[hourIndexToCheck] != 0){
  106. foundEntry = true;
  107. break;
  108. }
  109. }
  110.  
  111. if(foundEntry){
  112. Logger.log("Tutto ok! L'account sembra essere attivo nelle ultime " + NUM_HOURS_TO_CHECK + " ore.");
  113. }
  114. else {
  115. var subject = "Un Account Google non riceve impressioni!";
  116. 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.";
  117. sendEmailNotifications(EMAIL_ADDRESS_TO_NOTIFY, subject, body, "warning");
  118. Logger.log("WARNING: L'account non è stato attivo nelle ultime " + NUM_HOURS_TO_CHECK + " ore.");
  119. }
  120.  
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement