Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var TIME_PERIOD = "LAST_30_DAYS" // THIS_MONTH, LAST_MONTH, LAST_30_DAYS, ALL_TIME
- function main(){
- // Get out account data
- var account_data = AdsApp.currentAccount().getStatsFor(TIME_PERIOD);
- // Total Values
- ttl_clicks = account_data.getClicks();
- ttl_impr = account_data.getImpressions();
- ttl_cost = account_data.getCost();
- ttl_conversions = account_data.getConversions();
- // Averages
- avg_cpa = ttl_cost / ttl_conversions;
- avg_ctr = account_data.getCtr();
- avg_cpc = account_data.getAverageCpc();
- // This will create a string with a space in the beggining and then ISO code like: USD, CAD, AUD, INR, EUR...
- currency = " " + AdsApp.currentAccount().getCurrencyCode();
- // Create an array with all the data
- data = []
- data.push("Total Clicks " + ttl_clicks );
- data.push("Total Imp " + ttl_impr );
- data.push("Total Cost " + ttl_cost + currency);
- data.push("Total Conv " + ttl_conversions );
- data.push("AVG CPA " + avg_cpa + currency);
- data.push("AVG CTR " + avg_ctr );
- data.push("AVG CPC " + avg_cpc + currency);
- for (i = 0; i < data.length; i++){
- // Send each element of array (out stats) as separate message
- Logger.log(data[i]);
- }
- columns = ["CampaignName", "AdGroupName", "Criteria", "Clicks", "Cost", "CostPerConversion"];
- conditions = [];
- conditions.push("Cost > " + (avg_cpa * 1000000).toString());
- conditions.push("CostPerConversion > " + (avg_cpa * 2 * 1000000).toString());
- columns_string = columns.join(", ") // CampaignName, AdGroupName
- conditions_string = conditions.join(" AND ") // Cost > 10 AND CostPerConversion > 10
- Logger.log(columns_string)
- Logger.log(conditions_string)
- var awql = "SELECT " + columns_string + " FROM KEYWORDS_PERFORMANCE_REPORT WHERE " + conditions_string + " DURING " + TIME_PERIOD;
- var report = AdsApp.report(awql).rows();
- var total_bad_keywords = 0;
- Logger.log("Here's you data");
- var report_data = []; //[ ["cmpName", "AdgrName", "bmw buy la", "10", "100", "10"], ... ]
- while(report.hasNext()){
- row = report.next();
- metrics = [];
- for(i = 0; i < columns.length; i++){
- metrics.push(row[columns[i]]);
- }
- report_data.push(metrics)
- total_bad_keywords += 1;
- }
- Logger.log("Total Bad Keywords " + total_bad_keywords.toString());
- //
- report_data.sort(function(a, b) {
- return b[4] - a[4];
- });
- // Contruct Beautiful e-mail
- html_table_header = '<table border="0" cellspacing="0" style="border-color: #C0C0C0; border-collapse: collapse; padding: 5px; width: 100%">';
- html_table_columns = '<tr><th align="left">' + columns.join('</th><th align="left">') + '</th></tr>';
- html_table_rows = ''
- html_final_row = '</table><br><h3>Find more automation solutions on YouTube - Markteting Watch House</h3> '
- for (i = 0; i < report_data.length; i++){
- html_table_rows += '<tr style="border-bottom: 1px"><td>' + report_data[i].join('</td><td>') + '</td></tr>';
- }
- html_first_row = '<b> Total Bad Keywords Found: ' + total_bad_keywords + '</b><br>'+
- 'Currency: ' + currency + '<br />'
- final_html = html_first_row + html_table_header + html_table_columns + html_table_rows + html_final_row;
- if (total_bad_keywords > 0 && total_bad_keywords < 200) {
- var date = new Date().toLocaleDateString();
- var account = AdsApp.currentAccount().getName();
- MailApp.sendEmail({
- to: EMAIL_ADDRESS,
- subject: "KeyWord Analysis: " + account + ". Date: " + date + "",
- htmlBody: final_html
- });
- } else if (total_bad_keywords >= 200){
- var date = new Date().toLocaleDateString();
- var account = AdsApp.currentAccount().getName();
- MailApp.sendEmail({
- to: EMAIL_ADDRESS,
- subject: "Found too many bad keywords. Need a Manual look.",
- htmlBody: final_html
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement