Google Adsense EPC / CPC

By JamesP Last update Nov 28, 2007 — Installed 1,661 times.
// ==UserScript==
// @name           Adsense EPC / CPC
// @version        1.2
// @namespace      http://www.google.com
// @description    Shows an Earnings Per Click column in your Adsense Reports. Also known as Cost Per Click.
// @include        https://www.google.com/adsense/report/aggregate*
// ==/UserScript==


function strip(str)
{
	filteredValues = "1234567890.";
	var i;
	var returnString = "";

	for (i = 0; i < str.length; i++) {
		var c = str.charAt(i);
		if (filteredValues.indexOf(c) != -1) returnString += c;
	}
	return returnString;
}

function isdefined(object, variable)
{
	return (typeof(eval(object)[variable]) != 'undefined');
}




report = document.getElementById("report");

var hasTotals = true;
var eColumn; // Earnings Column Index
var cColumn; // Clicks Column Index

var rowOffset = 2; // Depending on the report size, it may or may not show totals.  This offset deal with that.

if (report.childNodes[1].childNodes[2].className != "columntitle")
{
	rowOffset = 0;
	hasTotals = false;
}

for (var i=0; i < report.childNodes[1].childNodes[rowOffset].childNodes.length; i++) {
	
	var str = report.childNodes[1].childNodes[rowOffset].childNodes[i].innerHTML.toLowerCase();
	
	if (str.indexOf('earnings') != -1)
		eColumn = i;
	
	if (str.indexOf('clicks') != -1)
		cColumn = i;
	
	i++;
}


var start = 2;
if (!hasTotals) start = 0;

// Total
if (hasTotals) {
	newElement = document.createElement('td');
	newElement.innerHTML = '';
	target = report.childNodes[1].childNodes[0].childNodes[eColumn];
	target.parentNode.insertBefore(newElement, target.previousSibling);
}

// Heading
newElement = document.createElement('td');
newElement.innerHTML = 'Average EPC';

target = report.childNodes[1].childNodes[start].childNodes[eColumn];
target.parentNode.insertBefore(newElement, target.previousSibling);





var trs = report.childNodes[1].childNodes;
var count = 0;
var total = 0;
for (var i = start + 2; i < trs.length; i++) {
	
	// Calculate CPC
	var earnings = strip(report.childNodes[1].childNodes[i].childNodes[eColumn].innerHTML) * 1;
	var clicks = strip(report.childNodes[1].childNodes[i].childNodes[cColumn].innerHTML) * 1;
	
	
	val = '$' + Math.round(earnings / clicks * 100) / 100;
	if (val == '$Infinity' || val == '$NaN')
		val = '';
	else {
		if (val.lastIndexOf('.') != val.length - 3) val += '0';
	}
	
	if (i < trs.length - 4)
	{
		total += (earnings / clicks);
		count ++;
	}
	
	if (i == trs.length - 2) {
		earnings = strip(report.childNodes[1].childNodes[i-2].childNodes[eColumn+1].innerHTML) * 1;
		clicks = strip(report.childNodes[1].childNodes[i-2].childNodes[cColumn].innerHTML) * 1;
		val = '$' + Math.round(earnings / clicks * 10000) / 10000;
	}
	if (i == trs.length - 4) val = '';
	
	newElement = document.createElement('td');
	newElement.innerHTML = val;
	target = trs[i].childNodes[eColumn];
	target.parentNode.insertBefore(newElement, target.previousSibling);
	
	i++;
}