//Bid Adjustments per Device script //Spreadsheet URL here var SPREADSHEET_URL = "https://docs.google.com/spreadsheets/d/1dK2KpXsjq1JjDhyLU93YkT8VYnGwAz6M8ik6ho7lqlM/edit#gid=0"; //Sheet (tab) name here var SHEET_NAME = "Device Bids"; var ss = SpreadsheetApp.openByUrl(SPREADSHEET_URL); var sheet = ss.getSheetByName(SHEET_NAME); function main() { var row = 2; while(sheet.getRange(row, 1).getValue()){ var campaignName = sheet.getRange(row, 1).getValue(); var desktopMod = sheet.getRange(row, 3).getValue(); var mobileMod = sheet.getRange(row, 4).getValue(); var tabletMod = sheet.getRange(row, 5).getValue(); if(sheet.getRange(row, 2).getValue()){ var adGroupName = sheet.getRange(row, 2).getValue(); Logger.log("adgroup level" + adGroupName); var adgroup = AdWordsApp.adGroups() .withCondition("Name = '"+ adGroupName +"'") .withCondition("CampaignName = '"+ campaignName +"'") .get(); if(adgroup.hasNext()){ adgroup.next().devices().setDesktopBidModifier(1+desktopMod); } if(adgroup.hasNext()){ adgroup.next().devices().setMobileBidModifier(1+mobileMod); } if(adgroup.hasNext()){ adgroup.next().devices().setTabletBidModifier(1+tabletMod); } }else{ Logger.log("campaign level: " + campaignName); var campaigns = AdWordsApp.campaigns().withCondition("CampaignName = '"+ campaignName +"'").get(); if(campaigns.hasNext()){ var campaignTargets = campaigns.next().targeting().platforms().get(); } while(campaignTargets.hasNext()){ var campaignTarget = campaignTargets.next(); if(campaignTarget.getName()=="Desktop"){ campaignTarget.setBidModifier(1+desktopMod); }else if(campaignTarget.getName()=="HighEndMobile"){ campaignTarget.setBidModifier(1+mobileMod); }else if(campaignTarget.getName()=="Tablet"){ campaignTarget.setBidModifier(1+tabletMod); } } } row++; } var row = 2; while(sheet.getRange(row, 1).getValue()){ var campaignName = sheet.getRange(row, 1).getValue(); var desktopMod = sheet.getRange(row, 3).getValue(); var mobileMod = sheet.getRange(row, 4).getValue(); var tabletMod = sheet.getRange(row, 5).getValue(); if(sheet.getRange(row, 2).getValue()){ var adGroupName = sheet.getRange(row, 2).getValue(); Logger.log("adgroup level" + adGroupName); var adgroup = AdWordsApp.shoppingAdGroups() .withCondition("Name = '"+ adGroupName +"'") .withCondition("CampaignName = '"+ campaignName +"'") .get(); if(adgroup.hasNext()){ adgroup.next().devices().setDesktopBidModifier(1+desktopMod); } if(adgroup.hasNext()){ adgroup.next().devices().setMobileBidModifier(1+mobileMod); } if(adgroup.hasNext()){ adgroup.next().devices().setTabletBidModifier(1+tabletMod); } }else{ Logger.log("campaign level: " + campaignName); var campaigns = AdWordsApp.shoppingCampaigns().withCondition("CampaignName = '"+ campaignName +"'").get(); if(campaigns.hasNext()){ var campaignTargets = campaigns.next().targeting().platforms().get(); } while(campaignTargets.hasNext()){ var campaignTarget = campaignTargets.next(); if(campaignTarget.getName()=="Desktop"){ campaignTarget.setBidModifier(1+desktopMod); }else if(campaignTarget.getName()=="HighEndMobile"){ campaignTarget.setBidModifier(1+mobileMod); }else if(campaignTarget.getName()=="Tablet"){ campaignTarget.setBidModifier(1+tabletMod); } } } row++; } }