function main() {
var date_range = 'TODAY';
var columns = ['CampaignName',
'AdGroupId',
'Query',
'AverageCpc',
'Clicks',
'ConversionRate',
'Conversions',
'ConversionValue',
'Cost',
'Ctr',
'Impressions'];
var columns_str = columns.join(',') + " ";
var sheet = SpreadsheetApp.openByUrl(spreadsheet_url).getActiveSheet();
sheet.clear();
if(sheet.getRange('A1:A1').getValues()[0][0] == "") {
sheet.clear();
sheet.appendRow(columns);
}
var report_iter = AdWordsApp.report(
'SELECT ' + columns_str +
'FROM SEARCH_QUERY_PERFORMANCE_REPORT ' +
'WHERE CampaignName CONTAINS "Omnia" ' +
'AND Clicks >5 ' +
'DURING ' +date_range).rows();
while(report_iter.hasNext()) {
var row = report_iter.next();
var row_array = [];
for(var i in columns) {
row_array.push(row[columns[i]]);
}
sheet.appendRow(row_array);
}
//ROAS Calculation / Negative Keyword List Push to array - working
var data_range = sheet.getDataRange();
var last_row = data_range.getLastRow();
sheet.getRange(1,12).setValue("ROAS");
sheet.getRange(1,13).setValue("Poor Performer");
var Negative = "Negative";
var negativelist = [];
var adGroupIdList = [];
for(var r=2;r<=last_row;r++) {
var convValue = data_range.getCell(r,8).getValue();
var cost = data_range.getCell(r,9).getValue();
var roas = (convValue / cost);
sheet.getRange(r, 12).setValue(roas);
if (roas < 2 ) {
sheet.getRange(r,13).setValue(Negative);
if (Negative === "Negative") {
// Add all negative keywords to an array
negativelist.push(data_range.getCell(r,3).getValue());
// Add all the ad group names where keyword is labelled negative into an array
adGroupIdList.push(data_range.getCell(r,2).getValue());
}
}
}
Logger.log(negativelist);
Logger.log(adGroupIdList); //working to here
//**// Add negative keywords at the ad group level
var groupIterator = AdWordsApp.shoppingAdGroups()
.withIds(adGroupIdList)
.get()
while (groupIterator.hasNext()) {
var adGroup = groupIterator.next();
var adGroupName = adGroup.getName();
var campaignName = adGroup.getCampaign().getName();
//** */
for (var i=0; i<negativelist.length; i++) {
adGroup.createNegativeKeyword("[" + negativelist[i] + "]");
}
}
Logger.log("Finished.");