/*--------
סקריפט לדוח מילות מפתח
מבית אקטיביטק בע"מ
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);
}