I am trying to pull up reports of keywords where campaign has a certain label lets call it " Test 123 " and only those keywords in those campaign which have no label on it. I tried to test it with NO_IN but its not working. Here is the script:
function main(){
var labelIds = [];
var labelIterator = AdsApp.labels()
.withCondition("KeywordsCount > 0")
.withCondition("Name CONTAINS 'kw'")
.get();
while (labelIterator.hasNext()){
var label = labelIterator.next();
labelIds.push(label.getId());
}
var campaignIterator = AdsApp.campaigns()
.withCondition("Status = ENABLED")
.withCondition("LabelNames CONTAINS_ANY ['Test 123']")
.forDateRange(dateFrom, dateTo)
.get();
var campaignIds = [];
//var count = 0;
while(campaignIterator.hasNext()){
var campaign = campaignIterator.next();
campaignIds.push(campaign.getId());
//count++;
}
//Logger.log(labelIds);
var query = "SELECT LabelIds,CampaignName,AdGroupName,KeywordMatchType,Id,Conversions,ConversionRate,TopOfPageCpc,FirstPositionCpc,FirstPageCpc,CampaignId,AdGroupId,CpcBid,Criteria FROM KEYWORDS_PERFORMANCE_REPORT WHERE CampaignId IN [" + campaignIds.join() + "] AND AdGroupStatus = 'ENABLED' AND CampaignStatus = 'ENABLED' AND Conversions > 0 AND Status = 'ENABLED' AND LabelIds NOT_IN [" + labelIds.join() + "] DURING " + dateFrom + "," + dateTo;
var report = AdsApp.report(query);
//return false;
var reportRows = report.rows();
var campaigns = {};
while (reportRows.hasNext()){
var reportRow = reportRows.next();
//Logger.log(reportRow.LabelIds);
var CampaignName = reportRow.CampaignName;
var AdGroupName = reportRow.AdGroupName;
var KeywordMatchType = reportRow.KeywordMatchType;
var Id = reportRow.Id;
var Conversions = reportRow.Conversions;
var ConversionRate = reportRow.ConversionRate;
var TopOfPageCpc = reportRow.TopOfPageCpc;
var FirstPositionCpc = reportRow.FirstPositionCpc;
var FirstPageCpc = reportRow.FirstPageCpc;
var CampaignId = reportRow.CampaignId;
var AdGroupId = reportRow.AdGroupId;
var CpcBid = reportRow.CpcBid;
var newMaxCpc = CpcBid;
var Criteria = reportRow.Criteria;
var breakeven = (0.07 * parseFloat(reportRow.ConversionRate.replace("%",""))).toFixed(2);
if(isNaN(parseFloat(FirstPositionCpc)) || parseFloat(FirstPositionCpc) == 0){
if(isNaN(parseFloat(TopOfPageCpc)) || parseFloat(TopOfPageCpc) == 0){
if(breakeven > parseFloat(FirstPageCpc)){
newMaxCpc = parseFloat(FirstPageCpc);
}else{
newMaxCpc = breakeven;
}
}else{
if(breakeven > parseFloat(TopOfPageCpc)){
newMaxCpc = parseFloat(TopOfPageCpc);
}else{
newMaxCpc = breakeven;
}
}
}else{
if(breakeven > parseFloat(FirstPositionCpc)){
newMaxCpc = parseFloat(FirstPositionCpc);
}else{
newMaxCpc = breakeven;
}
}
if(newMaxCpc != CpcBid){
if(!(CampaignId in campaigns)){
campaigns[CampaignId] = AdWordsApp.campaigns().withCondition("Id = '" + CampaignId + "'").get().next();
}
var campaign = campaigns[CampaignId];
var keyword = campaign.keywords().withCondition("AdGroupId = '" + AdGroupId + "'").withCondition("Id = '" + Id + "'").get().next();
keyword.bidding().setCpc(newMaxCpc);
}
}
}