הדפסה
/*--------
סקריפט לדוח מילות מפתח
מבית אקטיביטק בע"מ
www.actvtec.co.il
----------*/

// כתובת מייל לשליחת הלינק לדוח, ניתן להוסיף יותר מכתובת אחת מופרדת בפסיק
// במידה ואינך מעוניין ניתן למחוק שורה זו
var RECIPIENT_EMAIL = This e-mail address is being protected from spambots. You need JavaScript enabled to view it.';

// URL of the default spreadsheet template. This should be a copy of http://goo.gl/cULxUX
// כתובת למסמך תבנית הדוח, אמור להיות העתק של המסמך הבא:
// https://goo.gl/Zv9ayz
// שימו לב, על המסמך להיות ציבורי מאופשר לעריכה
var SPREADSHEET_URL = '*כתובת למסמך גוגל*';


/*----------------------------*/
var today = new Date();
var date_str = [today.getFullYear(),(today.getMonth() + 1),today.getDate()].join("-");

function main() {
  Logger.log('כותב למסמך - %s.', SPREADSHEET_URL);
  var spreadsheet = copySpreadsheet(SPREADSHEET_URL);
  Logger.log('יוצר מסמך דיווח חדש -  %s בהסתמך על התבנית. כל המידע יוצג שם.',
      spreadsheet.getUrl());
var accountName = AdWordsApp.currentAccount().getName();
var accountId = AdWordsApp.currentAccount().getCustomerId();
  var sheet = spreadsheet.getSheetByName('Report');
  sheet.getRange(1, 7, 1, 1).setValue(new Date());
  sheet.getRange(1, 1, 1, 1).setValue('חשבון: ' + accountName);
  sheet.getRange(1, 2, 1, 1).setValue('מזהה לקוח: ' + accountId);

  outputQualityScoreData(sheet);
  outputPositionData(sheet);
  Logger.log('דוח מילות מפתח זמין ב - \n' +
      spreadsheet.getUrl());
  if (RECIPIENT_EMAIL) {
    MailApp.sendEmail(RECIPIENT_EMAIL,
      'דוח מילות מפתח מוכן',
      spreadsheet.getUrl());
  }
}

function copySpreadsheet(spreadsheetUrl) {
  return SpreadsheetApp.openByUrl(spreadsheetUrl).copy(
      'דוח ביצועי מילות מפתח ' + date_str);
}

function outputQualityScoreData(sheet) {
  // יצירת כותרות
  var header = [
    'ציון איכות',
    'מספר מילות מפתח',
    'הופעות',
    'קליקים',
    'אחוז הקלקה',
    'עלות'
  ];
  sheet.getRange(3, 2, 1, 6).setValues([header]);

  var qualityScoreMap = [];
  for (i = 1; i <= 10; i++) {
    qualityScoreMap[i] = {
      numKeywords: 0,
      totalImpressions: 0,
      totalClicks: 0,
      totalCost: 0.0
    };
  }

  var keywordIterator = AdWordsApp.keywords()
      .forDateRange('LAST_WEEK')
      .withCondition('Impressions > 0')
      .get();
  while (keywordIterator.hasNext()) {
    var keyword = keywordIterator.next();
    var stats = keyword.getStatsFor('LAST_WEEK');
    var data = qualityScoreMap[keyword.getQualityScore()];
    if (data) {
      data.numKeywords++;
      data.totalImpressions += stats.getImpressions();
      data.totalClicks += stats.getClicks();
      data.totalCost += stats.getCost();
    }
  }

  var rows = [];
  for (var key in qualityScoreMap) {
    var ctr = 0;
    var cost = 0.0;
    if (qualityScoreMap[key].numKeywords > 0) {
      ctr = (qualityScoreMap[key].totalClicks /
        qualityScoreMap[key].totalImpressions) * 100;
    }
    var row = [
      key,
      qualityScoreMap[key].numKeywords,
      qualityScoreMap[key].totalImpressions,
      qualityScoreMap[key].totalClicks,
      ctr.toFixed(2),
      qualityScoreMap[key].totalCost];
    rows.push(row);
  }
  sheet.getRange(4, 2, rows.length, 6).setValues(rows);
}

function outputPositionData(sheet) {
  // Output header row
  headerRow = [];
  var header = [
    'מיקום ממוצע',
    'מספר מילות מפתח',
    'הופעות',
    'קליקים',
    'אחוז הקלקה',
    'עלות'
  ];
  headerRow.push(header);
  sheet.getRange(16, 2, 1, 6).setValues(headerRow);

  // Initialize
  var positionMap = [];
  for (i = 1; i <= 12; i++) {
    positionMap[i] = {
      numKeywords: 0,
      totalImpressions: 0,
      totalClicks: 0,
      totalCost: 0.0
    };
  }

  var keywordIterator = AdWordsApp.keywords()
      .forDateRange('LAST_WEEK')
      .withCondition('Impressions > 0')
      .get();
  while (keywordIterator.hasNext()) {
    var keyword = keywordIterator.next();
    var stats = keyword.getStatsFor('LAST_WEEK');
    if (stats.getAveragePosition() <= 11) {
      var data = positionMap[Math.ceil(stats.getAveragePosition())];
    } else {
        
      var data = positionMap[12];
    }
    data.numKeywords++;
    data.totalImpressions += stats.getImpressions();
    data.totalClicks += stats.getClicks();
    data.totalCost += stats.getCost();
  }

  var rows = [];
  for (var key in positionMap) {
    var ctr = 0;
    var cost = 0.0;
    if (positionMap[key].numKeywords > 0) {
      ctr = (positionMap[key].totalClicks /
        positionMap[key].totalImpressions) * 100;
    }
    var row = [
      key <= 11 ? key - 1 + ' - ' + key : '>11',
      positionMap[key].numKeywords,
      positionMap[key].totalImpressions,
      positionMap[key].totalClicks,
      ctr.toFixed(2),
      positionMap[key].totalCost
    ];
    rows.push(row);
  }
  sheet.getRange(17, 2, rows.length, 6).setValues(rows);
}