function main() {
//Main variables & MCC Selector
var cid = “XXX-XXX-XXXX”
var target_cpa = XXX
var date_range = "LAST_14_DAYS"
var mccAccount = AdWordsApp.currentAccount();
var childAccounts = MccApp.accounts().withIds([cid]).get();
var childAccount = childAccounts.next();
MccApp.select(childAccount);
// Date and Timestamp
var now = new Date();
//Campaign criteria, iterators and selectors
var campaignIterator = AdWordsApp
.campaigns()
.forDateRange(date_range)
.orderBy("Conversions DESC")
.withCondition("Status = ENABLED")
.withCondition("Conversions >0")
.get();
while (campaignIterator.hasNext()) {
var campaign = campaignIterator.next();
var platformIterator = campaign.targeting().platforms().forDateRange(date_range).orderBy("Conversions DESC").withCondition("Conversions >0").get();
while (platformIterator.hasNext()) {
var platform = platformIterator.next();
Logger.log(platform.getName() + ' bid modifier: ' +
platform.getBidModifier());
var stats = platform.getStatsFor(date_range);
var conversions = stats.getConversions();
var conversion_rate = stats.getConversionRate();
var cost = stats.getCost();
//CPA and Device Bid. Adjustment Calculations
var cpa = cost / conversions
var device_bid_adj = target_cpa / cpa - 1
// Name of the specific spreadsheet
var SPREADSHEET_URL = ‘SPREADSHEET_URL’;
// Name of the specific sheet
var SHEET_NAME = ‘SHEET_NAME’;
var ss = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
var sheet = ss.getSheetByName(SHEET_NAME);
// Appends rows to bottom of sheet
sheet.appendRow([now, cid, campaign.getName(), platform.getName(), conversions, platform.getBidModifier(), cost, cpa, device_bid_adj]);
sheet.sort(5, false);
// Show Bid Adjustment as % with Two Decimals
var cell = sheet.getRange("I:I");
cell.setNumberFormat("0.00%");
}
//Logger
Logger.log(cid)
Logger.log('Campaign Name: ' + campaign.getName());
Logger.log('Conversions: ' + conversions);
Logger.log('Conversion Rate: ' + conversion_rate);
}
}