Skip to content

Instantly share code, notes, and snippets.

@chipoglesby
Last active August 29, 2015 14:22
Show Gist options
  • Save chipoglesby/0074572c1a11e635e0cb to your computer and use it in GitHub Desktop.
Save chipoglesby/0074572c1a11e635e0cb to your computer and use it in GitHub Desktop.
An Adwords MCC script that pulls accounts from a spreadsheet and then writes the account spend for the month on another sheet.
var dateRange = "THIS_MONTH";
var SPREADSHEET_URL = "url";
var accounts = [];
var values = [];
function main() {
var ss = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
var clear = ss.getSheetByName('Adwords').getRange("A2:C").clear();
var sheet = ss.getSheetByName('Accounts');
var name = sheet.getName();
var lastRow = sheet.getLastRow()-1;
var range = sheet.getRange(2, 2,lastRow);
var values = range.getValues();
accounts.push(values);
MccApp.accounts().withCondition("Cost >= 0.00").forDateRange(dateRange).withLimit(50).withIds(accounts).executeInParallel('runOnEachAccount','campaignManager');
}
function runOnEachAccount() {
var ss = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
var values = [];
var stats = AdWordsApp.currentAccount().getStatsFor(dateRange);
var cost = stats.getCost();
var name = AdWordsApp.currentAccount().getName();
var customerId = AdWordsApp.currentAccount().getCustomerId();
var query = [name, customerId, cost].join(' ');
Logger.log(query);
values.push(name, customerId, cost);
var sheet = ss.getSheetByName('Adwords');
sheet.appendRow(values);
}
function campaignManager() {
var array = [];
var ss = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
var sheet = ss.getSheetByName('Accounts');
var lastRow = sheet.getLastRow()-1;
var range = sheet.getRange(2, 6, lastRow);
var currentName = AdWordsApp.currentAccount().getName();
var sheetName = sheet.getRange(2, 1, lastRow).getValues();
array.push(sheetName);
for (var i = 0; i < sheetName.length; i++) {
var n = sheetName[i];
var x = [];
if (n == currentName) {
x.push(i);
var sheet = ss.getSheetByName('Accounts');
var a = (Number(i)+Number(range.getRow()));
var b = (Number(range.getColumn()));
var c = sheet.getRange(a, b).getValues();
Logger.log(c+", "+n);
if (c == 'pause') {
var campaignIterator = AdWordsApp.campaigns().get();
while (campaignIterator.hasNext()) {
var campaign = campaignIterator.next();
campaign.pause();
}
} else if (c == 'Activate') {
var campaignIterator = AdWordsApp.campaigns().
withCondition("Status = PAUSED").
withCondition("Name DOES_NOT_CONTAIN_IGNORE_CASE zzz")
.get();
while (campaignIterator.hasNext()) {
var campaign = campaignIterator.next();
campaign.enable();
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment