Targeting

Add Geo targeting and bid modifiers
Update bid modifiers for Geo targeting
Update location settings for Geo targeting
Remove Geo targeting
Set Device targeting and bid modifiers
Add Day of week / Hours targeting and bid modifiers
Update bid modifiers for Day of week / Hours targeting settings
Update Day of week / Hours targeting
Remove Day of week / Hours targeting
Add Age targeting and bid modifiers
Update bid modifiers for Age targeting
Update Age targeting
Remove Age targeting

Add Geo targeting and bid modifiers


function addLocationAndBidModifiers() {
  const dictionaries = Display.DictionaryService.getGeographicLocation({
    lang: 'JA',
  }).rval;
  const geoName = '東京都';
  let targetId;
  for (let i = 0; i < dictionaries.totalNumEntries; i++){
    let geographicLocation = dictionaries.values[i].geographicLocation;
    if (geographicLocation.fullName == geoName){
      targetId = geographicLocation.code;
      break;
    }
  }
  if (targetId == undefined) {
    Logger.log('code of ' + geoName + ' is not found');
    return;
  }
  const accountId = AdsUtilities.getCurrentAccountId();
  const adGroupTargetArray = [
    {
      campaignId: 11111111,
      adGroupId: 222222222,
        target: {
          targetId: targetId,
          targetType: 'GEO_TARGET',
        }
    },
    {
      campaignId: 33333333,
      adGroupId: 444444444,
      bidMultiplier: 1.5,
        target: {
          targetId: targetId,
          targetType: 'GEO_TARGET',
        }
    }
  ];//Multiple selections are possible
  const adGroupTargets = Display.AdGroupTargetService.add({
    accountId: accountId,
    operand: adGroupTargetArray,
  }).rval;
  for (let i = 0; i < adGroupTargets.values.length; i++) {
    if (adGroupTargets.values[i].operationSucceeded) {
      let adGroupTargetList = adGroupTargets.values[i].adGroupTargetList;
      Logger.log('adGroupId-> ' + adGroupTargetList.adGroupId
        + ', campaignId-> ' + adGroupTargetList.campaignId
        + ' set as geoNameJa-> ' + adGroupTargetList.target.geoTarget.geoNameJa
        + ', targetId-> ' + adGroupTargetList.target.targetId
        + ', targetType-> ' + adGroupTargetList.target.targetType
        + ', bidMultiplier-> ' + adGroupTargetList.bidMultiplier);
    } else {
      Logger.log('adGroupId-> ' + adGroupTargetArray[i].adGroupId
        + ', campaignId-> ' + adGroupTargetArray[i].campaignId
        + ' could not set as geoNameJa-> ' + geoName
        + ', targetId-> ' + adGroupTargetArray[i].target.targetId
        + ', targetType-> ' + adGroupTargetArray[i].target.targetType);
    }
  }
}

Update bid modifiers for Geo targeting


function setLocationAndBidModifiers() {
  const dictionaries = Display.DictionaryService.getGeographicLocation({
    lang: 'JA',
  }).rval;
  const geoName = '東京都';
  let targetId;
  for (let i = 0; i < dictionaries.totalNumEntries; i++){
    let geographicLocation = dictionaries.values[i].geographicLocation;
    if (geographicLocation.fullName == geoName){
      targetId = geographicLocation.code;
      break;
    }
  }
  if (targetId == undefined) {
    Logger.log('code of ' + geoName + ' is not found');
    return;
  }
  const accountId = AdsUtilities.getCurrentAccountId();
  const adGroupTargetArray = [
    {
      campaignId: 11111111,
      adGroupId: 222222222,
      bidMultiplier: 1.9,
        target: {
          targetId: targetId,
          targetType: 'GEO_TARGET',
        }
    },
    {
      campaignId: 33333333,
      adGroupId: 444444444,
      bidMultiplier: 1.7,
        target: {
          targetId: targetId,
          targetType: 'GEO_TARGET',
        }
    }
  ];//Multiple selections are possible
  const adGroupTargets = Display.AdGroupTargetService.set({
    accountId: accountId,
    operand: adGroupTargetArray,
  }).rval;
  for (let i = 0; i < adGroupTargets.values.length; i++) {
    if (adGroupTargets.values[i].operationSucceeded) {
      let adGroupTargetList = adGroupTargets.values[i].adGroupTargetList;
      Logger.log('adGroupId-> ' + adGroupTargetList.adGroupId
        + ', campaignId-> ' + adGroupTargetList.campaignId
        + ' set as geoNameJa-> ' + adGroupTargetList.target.geoTarget.geoNameJa
        + ', targetId-> ' + adGroupTargetList.target.targetId
        + ', targetType-> ' + adGroupTargetList.target.targetType
        + ', bidMultiplier-> ' + adGroupTargetList.bidMultiplier);
    } else {
      Logger.log('adGroupId-> ' + adGroupTargetArray[i].adGroupId
        + ', campaignId-> ' + adGroupTargetArray[i].campaignId
        + ' could not set as geoNameJa-> ' + geoName
        + ', targetId-> ' + adGroupTargetArray[i].target.targetId
        + ', targetType-> ' + adGroupTargetArray[i].target.targetType);
    }
  }
}

Update location settings for Geo targeting


function replaceLocationAndBidModifiers() {
  const dictionaries = Display.DictionaryService.getGeographicLocation({
    lang: 'JA',
  }).rval;
  const geoName = '京都府';
  let targetId;
  for (let i = 0; i < dictionaries.totalNumEntries; i++){
    let geographicLocation = dictionaries.values[i].geographicLocation;
    if (geographicLocation.fullName == geoName){
      targetId = geographicLocation.code;
      break;
    }
  }
  if (targetId == undefined) {
    Logger.log('code of ' + geoName + ' is not found');
    return;
  }
  const accountId = AdsUtilities.getCurrentAccountId();
  const adGroupTargetArray = [
    {
      campaignId: 11111111,
      adGroupId: 222222222,
      bidMultiplier: 1.1,
        target: {
          targetId: targetId,
          targetType: 'GEO_TARGET',
        }
    },
    {
      campaignId: 33333333,
      adGroupId: 444444444,
      bidMultiplier: 1.2,
        target: {
          targetId: targetId,
          targetType: 'GEO_TARGET',
        }
    }
  ];//Multiple selections are possible
  const adGroupTargets = Display.AdGroupTargetService.replace({
    accountId: accountId,
    operand: adGroupTargetArray,
  }).rval;
  if (adGroupTargets == null) {
    Logger.log('This request could not be replaced.');
    return;
  }
  for (let i = 0; i < adGroupTargets.values.length; i++) {
    if (adGroupTargets.values[i].operationSucceeded) {
      let adGroupTargetList = adGroupTargets.values[i].adGroupTargetList;
      Logger.log('adGroupId-> ' + adGroupTargetList.adGroupId
        + ', campaignId-> ' + adGroupTargetList.campaignId
        + ' replace as geoNameJa-> ' + adGroupTargetList.target.geoTarget.geoNameJa
        + ', targetId-> ' + adGroupTargetList.target.targetId
        + ', targetType-> ' + adGroupTargetList.target.targetType
        + ', bidMultiplier-> ' + adGroupTargetList.bidMultiplier);
    }
  }
}

Remove Geo targeting


function removeLocationAndBidModifiers() {
  const dictionaries = Display.DictionaryService.getGeographicLocation({
    lang: 'JA',
  }).rval;
  const geoName = '京都府';
  let targetId;
  for (let i = 0; i < dictionaries.totalNumEntries; i++){
    let geographicLocation = dictionaries.values[i].geographicLocation;
    if (geographicLocation.fullName == geoName){
      targetId = geographicLocation.code;
      break;
    }
  }
  if (targetId == undefined) {
    Logger.log('code of ' + geoName + ' is not found');
    return;
  }
  const accountId = AdsUtilities.getCurrentAccountId();
  const adGroupTargetArray = [
    {
      campaignId: 11111111,
      adGroupId: 222222222,
        target: {
          targetId: targetId,
          targetType: 'GEO_TARGET',
        }
    },
    {
      campaignId: 33333333,
      adGroupId: 444444444,
        target: {
          targetId: targetId,
          targetType: 'GEO_TARGET',
        }
    }
  ];//Multiple selections are possible
  const adGroupTargets = Display.AdGroupTargetService.remove({
    accountId: accountId,
    operand: adGroupTargetArray,
  }).rval;
  for (let i = 0; i < adGroupTargets.values.length; i++) {
    if (adGroupTargets.values[i].operationSucceeded) {
      let adGroupTargetList = adGroupTargets.values[i].adGroupTargetList;
      Logger.log('adGroupId-> ' + adGroupTargetList.adGroupId
        + ', campaignId-> ' + adGroupTargetList.campaignId
        + ', geoNameJa-> ' + adGroupTargetList.target.geoTarget.geoNameJa
        + ', targetId-> ' + adGroupTargetList.target.targetId
        + ' is removed');
    } else {
      Logger.log('adGroupId-> ' + adGroupTargetArray[i].adGroupId
        + ', campaignId-> ' + adGroupTargetArray[i].campaignId
        + ', geoName-> ' + geoName
        + ', targetId-> ' + adGroupTargetArray[i].target.targetId
        + ' could not be removed');
    }
  }
}

Set Device targeting and bid modifiers


function setDeviceAndBidModifiers() {
  const accountId = AdsUtilities.getCurrentAccountId();
  const adGroupIds = [111111111, 222222222, 333333333];//Empty when not specified
  const devices = ['DESKTOP', 'SMARTPHONE', 'TABLET'];//Multiple selections are possible
  const deviceApp = ['APP', 'WEB'];
  const deviceOs = ['IOS', 'ANDROID'];
  const desktopBid = 1.0;
  const smartphoneBid = 1.5;
  const tabletBid = 2.0;
  const adGroupsGet = Display.AdGroupService.get({
    accountId: accountId,
    adGroupIds: adGroupIds,
  }).rval;
  if (adGroupsGet.totalNumEntries == 0) {
    Logger.log('AdGroup does not exist.');
    return;
  }
  let adGroupArray = [];
  for (let i = 0; i < adGroupsGet.values.length; i++) {
    let adGroup = adGroupsGet.values[i].adGroup;
    let setAdGroup = {
      accountId: accountId,
      campaignId: adGroup.campaignId,
      adGroupId: adGroup.adGroupId,
      device: devices,
      deviceApp: deviceApp,//No necessary when devices is only 'DESKTOP'
      deviceOs: deviceOs//No necessary when devices is only 'DESKTOP'
    };
    adGroupArray.push(setAdGroup);
  }
  Display.AdGroupService.set({
    accountId: accountId,
    operand: adGroupArray,
  }).rval;
  const adGroupTargetsGet = Display.AdGroupTargetService.get({
    accountId: accountId,
    adGroupIds: adGroupIds,
    targetTypes: ['DEVICE_TARGET'],
  }).rval;
  if (adGroupTargetsGet.totalNumEntries == 0) {
    Logger.log('AdGroupTarget does not exist.');
    return;
  }
  let adGroupTargetArray = [];
  for (let i = 0; i < adGroupTargetsGet.totalNumEntries; i++) {
    let adGroupTargetList = adGroupTargetsGet.values[i].adGroupTargetList;
    let setTargetList = {
      accountId: accountId,
      campaignId: adGroupTargetList.campaignId,
      adGroupId: adGroupTargetList.adGroupId,
      target: {
        targetType: adGroupTargetList.target.targetType,
        targetId: adGroupTargetList.target.targetId,
        deviceTarget: adGroupTargetList.target.deviceTarget
      }
    };
    switch (adGroupTargetList.target.deviceTarget.deviceType) {
      case 'DESKTOP':
        setTargetList.bidMultiplier = desktopBid;
        break;
      case 'SMARTPHONE':
        setTargetList.bidMultiplier = smartphoneBid;
        break;
      case 'TABLET':
        setTargetList.bidMultiplier = tabletBid;
        break;
      default:
        break;
    }
    adGroupTargetArray.push(setTargetList);
  }
  const adGroupTargetsSet = Display.AdGroupTargetService.set({
    accountId: accountId,
    operand: adGroupTargetArray,
  }).rval;
  for (let i = 0; i < adGroupTargetsSet.values.length; i++) {
    if (adGroupTargetsSet.values[i].operationSucceeded) {
      let adGroupTargetList = adGroupTargetsSet.values[i].adGroupTargetList;
      Logger.log('adGroupId-> ' + adGroupTargetList.adGroupId
        + ', campaignId-> ' + adGroupTargetList.campaignId
        + ' have set to bidMultiplier-> ' + adGroupTargetList.bidMultiplier
        + ', deviceType-> ' + adGroupTargetList.target.deviceTarget.deviceType);
    } else {
      let adGroupTargetList = adGroupTargetArray[i];
      Logger.log('adGroupId-> ' + adGroupTargetList.adGroupId
        + ', campaignId-> ' + adGroupTargetList.campaignId
        + ' could not to set to bidMultiplier-> ' + adGroupTargetList.bidMultiplier
        + ', deviceType-> ' + adGroupTargetList.target.deviceTarget.deviceType);
    }
  }
}

Add Day of week / Hours targeting and bid modifiers


function addScheduleAndBidModifiers() {
  const accountId = AdsUtilities.getCurrentAccountId();
  const adGroupTargetArray = [
    {
      adGroupId: 111111111,
      bidMultiplier: 1.2,
      campaignId: 22222222,
      target: {
        adScheduleTarget: {
          dayOfWeek: 'MONDAY',
          startHour: 12,
          endHour: 15,
        },
        targetType: 'AD_SCHEDULE_TARGET',
      },
    },
    {
      adGroupId: 333333333,
      bidMultiplier: 1.5,
      campaignId: 44444444,
      target: {
        adScheduleTarget: {
          dayOfWeek: 'SUNDAY',
          startHour: 17,
          endHour: 18,
        },
        targetType: 'AD_SCHEDULE_TARGET',
      },
    }
  ];//Multiple selections are possible
  const adGroupTargets = Display.AdGroupTargetService.add({
    accountId: accountId,
    operand: adGroupTargetArray,
  }).rval;
  for (let i = 0; i < adGroupTargets.values.length; i++) {
    if (adGroupTargets.values[i].operationSucceeded) {
      let adGroupTargetList = adGroupTargets.values[i].adGroupTargetList;
      Logger.log('adGroupId-> ' + adGroupTargetList.adGroupId
        + ', campaignId-> ' + adGroupTargetList.campaignId
        + ' have set to dayOfWeek-> ' + adGroupTargetList.target.adScheduleTarget.dayOfWeek
        + ', Hour->' + adGroupTargetList.target.adScheduleTarget.startHour 
        + '-' + adGroupTargetList.target.adScheduleTarget.endHour
        + ', bidMultiplier-> ' + adGroupTargetList.bidMultiplier);
    } else {
      let adScheduleTarget = adGroupTargetArray[i].target.adScheduleTarget;
      Logger.log('adGroupId-> ' + adGroupTargetArray[i].adGroupId
        + ', campaignId-> ' + adGroupTargetArray[i].campaignId
        + ' could not to set to dayOfWeek-> ' + adScheduleTarget.dayOfWeek
        + ', Hour->' + adScheduleTarget.startHour + '-' + adScheduleTarget.endHour
        + ', bidMultiplier-> ' + adGroupTargetArray[i].bidMultiplier);
    }
  }
}

Update bid modifiers for Day of week / Hours targeting settings


function setScheduleAndBidModifiers() {
  const accountId = AdsUtilities.getCurrentAccountId();
  const adGroupIds = [111111111, 222222222];//Empty when not specified
  const adGroupTargetsGet = Display.AdGroupTargetService.get({
    accountId: accountId,
    adGroupIds: adGroupIds,
    targetTypes: ['AD_SCHEDULE_TARGET'],
  }).rval;
  if (adGroupTargetsGet.totalNumEntries == 0) {
    Logger.log('AdGroupTarget does not exist.');
    return;
  }
  let adGroupTargetArray = [];
  for (let i = 0; i < adGroupTargetsGet.values.length; i++) {
    const adGroupTarget =
      {
        adGroupId: adGroupTargetsGet.values[i].adGroupTargetList.adGroupId,
        bidMultiplier: 1.6,
        campaignId: adGroupTargetsGet.values[i].adGroupTargetList.campaignId,
        target: {
          adScheduleTarget: {
          },
          targetId: adGroupTargetsGet.values[i].adGroupTargetList.target.targetId,
          targetType: 'AD_SCHEDULE_TARGET',
        }
      };
    adGroupTargetArray.push(adGroupTarget);
  }
  const adGroupTargets = Display.AdGroupTargetService.set({
    accountId: accountId,
    operand: adGroupTargetArray,
  }).rval;
  for (let i = 0; i < adGroupTargets.values.length; i++) {
    if (adGroupTargets.values[i].operationSucceeded) {
      let adGroupTargetList = adGroupTargets.values[i].adGroupTargetList;
      Logger.log('adGroupId-> ' + adGroupTargetList.adGroupId
        + ', campaignId-> ' + adGroupTargetList.campaignId
        + ', dayOfWeek-> ' + adGroupTargetList.target.adScheduleTarget.dayOfWeek
        + ', Hour->' + adGroupTargetList.target.adScheduleTarget.startHour 
        + '-' + adGroupTargetList.target.adScheduleTarget.endHour
        + ' have set to bidMultiplier-> ' + adGroupTargetList.bidMultiplier);
    } else {
      let adScheduleTarget = adGroupTargetArray[i].target.adScheduleTarget;
      Logger.log('adGroupId-> ' + adGroupTargetArray[i].adGroupId
        + ', campaignId-> ' + adGroupTargetArray[i].campaignId
        + ' could not to set to bidMultiplier-> ' + adGroupTargetArray[i].bidMultiplier);
    }
  }
}

Update Day of week / Hours targeting


function replaceScheduleAndBidModifiers() {
  const accountId = AdsUtilities.getCurrentAccountId();
  const adGroupTargetArray = [
    {
      adGroupId: 111111111,
      bidMultiplier: 1.9,
      campaignId: 22222222,
      target: {
        adScheduleTarget: {
          dayOfWeek: 'TUESDAY',
          startHour: 11,
          endHour: 14,
        },
        targetType: 'AD_SCHEDULE_TARGET',
      },
    },
    {
      adGroupId: 333333333,
      bidMultiplier: 1.1,
      campaignId: 44444444,
      target: {
        adScheduleTarget: {
          dayOfWeek: 'SATURDAY',
          startHour: 16,
          endHour: 19,
        },
        targetType: 'AD_SCHEDULE_TARGET',
      },
    }
  ];//Multiple selections are possible
  const adGroupTargets = Display.AdGroupTargetService.replace({
    accountId: accountId,
    operand: adGroupTargetArray,
  }).rval;
  if (adGroupTargets == null) {
    Logger.log('This request could not be replaced.');
    return;
  }
  for (let i = 0; i < adGroupTargets.values.length; i++) {
    if (adGroupTargets.values[i].operationSucceeded) {
      let adGroupTargetList = adGroupTargets.values[i].adGroupTargetList;
      Logger.log('adGroupId-> ' + adGroupTargetList.adGroupId
        + ', campaignId-> ' + adGroupTargetList.campaignId
        + ' replace to dayOfWeek-> ' + adGroupTargetList.target.adScheduleTarget.dayOfWeek
        + ', Hour->' + adGroupTargetList.target.adScheduleTarget.startHour 
        + '-' + adGroupTargetList.target.adScheduleTarget.endHour
        + ', bidMultiplier-> ' + adGroupTargetList.bidMultiplier);
    }
  }
}

Remove Day of week / Hours targeting


function removeScheduleAndBidModifiers() {
  const accountId = AdsUtilities.getCurrentAccountId();
  const adGroupIds = [111111111, 222222222];//Empty when not specified
  const adGroupTargetsGet = Display.AdGroupTargetService.get({
    accountId: accountId,
    adGroupIds: adGroupIds,
    targetTypes: ['AD_SCHEDULE_TARGET'],
  }).rval;
  if (adGroupTargetsGet.totalNumEntries == 0) {
    Logger.log('AdGroupTarget does not exist.');
    return;
  }
  let adGroupTargetArray = [];
  for (let i = 0; i < adGroupTargetsGet.values.length; i++) {
    const adGroupTarget =
      {
        adGroupId: adGroupTargetsGet.values[i].adGroupTargetList.adGroupId,
        campaignId: adGroupTargetsGet.values[i].adGroupTargetList.campaignId,
        target: {
          targetId: adGroupTargetsGet.values[i].adGroupTargetList.target.targetId,
          targetType: 'AD_SCHEDULE_TARGET',
        }
      };
    adGroupTargetArray.push(adGroupTarget);
  }
  const adGroupTargets = Display.AdGroupTargetService.remove({
    accountId: accountId,
    operand: adGroupTargetArray,
  }).rval;
  for (let i = 0; i < adGroupTargets.values.length; i++) {
    if (adGroupTargets.values[i].operationSucceeded) {
      let adGroupTargetList = adGroupTargets.values[i].adGroupTargetList;
      Logger.log('adGroupId-> ' + adGroupTargetList.adGroupId
        + ', campaignId-> ' + adGroupTargetList.campaignId
        + ', dayOfWeek-> ' + adGroupTargetList.target.adScheduleTarget.dayOfWeek
        + ', Hour->' + adGroupTargetList.target.adScheduleTarget.startHour 
        + '-' + adGroupTargetList.target.adScheduleTarget.endHour
        + ', bidMultiplier-> ' + adGroupTargetList.bidMultiplier
        + ' is removed');
    } else {
      let adScheduleTarget = adGroupTargetArray[i].target.adScheduleTarget;
      Logger.log('adGroupId-> ' + adGroupTargetArray[i].adGroupId
        + ', campaignId-> ' + adGroupTargetArray[i].campaignId
        + ', targetId-> ' + adGroupTargetArray[i].target.targetId
        + ' could not be removed');
    }
  }
}

Add Age targeting and bid modifiers


function addAgeAndBidModifiers() {
  const accountId = AdsUtilities.getCurrentAccountId();
  const adGroupTargetArray = [
    {
      campaignId: 11111111,
      adGroupId: 222222222,
      bidMultiplier: 1.2,
      target: {
        ageTarget: {
          age: 'GT_RANGE20_24',
        },
        targetType: 'AGE_TARGET',
      },
    },
    {
      campaignId: 33333333,
      adGroupId: 444444444,
      bidMultiplier: 1.5,
      target: {
        ageTarget: {
          age: 'GT_RANGE70_UL2',
        },
        targetType: 'AGE_TARGET',
      },
    }
  ];//Multiple selections are possible
  const adGroupTargets = Display.AdGroupTargetService.add({
    accountId: accountId,
    operand: adGroupTargetArray,
  }).rval;
  for (let i = 0; i < adGroupTargets.values.length; i++) {
    if (adGroupTargets.values[i].operationSucceeded) {
      let adGroupTargetList = adGroupTargets.values[i].adGroupTargetList;
      let age = adGroupTargetList.target.ageTarget.age;
      let ageRange = 'UNKNOWN';
      if (age == 'GT_RANGE70_UL2') {
        ageRange = '70-';
      } else if (age.indexOf('GT_RANGE') >= 0) {
        ageRange = age.replace('GT_RANGE', '').replace('_', '-');
      }
      Logger.log('adGroupId-> ' + adGroupTargetList.adGroupId
        + ', campaignId-> ' + adGroupTargetList.campaignId
        + ' have set to age-> ' + ageRange
        + ', bidMultiplier-> ' + adGroupTargetList.bidMultiplier);
    } else {
      let age = adGroupTargetArray[i].target.ageTarget.age;
      let ageRange = 'UNKNOWN';
      if (age == 'GT_RANGE70_UL2') {
        ageRange = '70-';
      } else if (age.indexOf('GT_RANGE') >= 0) {
        ageRange = age.replace('GT_RANGE', '').replace('_', '-');
      }
      Logger.log('adGroupId-> ' + adGroupTargetArray[i].adGroupId
        + ', campaignId-> ' + adGroupTargetArray[i].campaignId
        + ' could not to set to age-> ' + ageRange
        + ', bidMultiplier-> ' + adGroupTargetArray[i].bidMultiplier);
    }
  }
}

Update bid modifiers for Age targeting


function setAgeAndBidModifiers() {
  const accountId = AdsUtilities.getCurrentAccountId();
  const adGroupIds = [111111111, 222222222];//Empty when not specified
  const adGroupTargetsGet = Display.AdGroupTargetService.get({
    accountId: accountId,
    adGroupIds: adGroupIds,
    targetTypes: ['AGE_TARGET'],
  }).rval;
  if (adGroupTargetsGet.totalNumEntries == 0) {
    Logger.log('AdGroupTarget does not exist.');
    return;
  }
  let adGroupTargetArray = [];
  for (let i = 0; i < adGroupTargetsGet.values.length; i++) {
    const adGroupTarget =
      {
        adGroupId: adGroupTargetsGet.values[i].adGroupTargetList.adGroupId,
        bidMultiplier: 1.6,
        campaignId: adGroupTargetsGet.values[i].adGroupTargetList.campaignId,
        target: {
          ageTarget: {
            age: adGroupTargetsGet.values[i].adGroupTargetList.target.ageTarget.age
          },
          targetId: adGroupTargetsGet.values[i].adGroupTargetList.target.targetId,
          targetType: 'AGE_TARGET',
        }
      };
    adGroupTargetArray.push(adGroupTarget);
  }
  const adGroupTargets = Display.AdGroupTargetService.set({
    accountId: accountId,
    operand: adGroupTargetArray,
  }).rval;
  for (let i = 0; i < adGroupTargets.values.length; i++) {
    if (adGroupTargets.values[i].operationSucceeded) {
      let adGroupTargetList = adGroupTargets.values[i].adGroupTargetList;
      let age = adGroupTargetList.target.ageTarget.age;
      let ageRange = 'UNKNOWN';
      if (age == 'GT_RANGE70_UL2') {
        ageRange = '70-';
      } else if (age.indexOf('GT_RANGE') >= 0) {
        ageRange = age.replace('GT_RANGE', '').replace('_', '-');
      }
      Logger.log('adGroupId-> ' + adGroupTargetList.adGroupId
        + ', campaignId-> ' + adGroupTargetList.campaignId
        + ' have set to age-> ' + ageRange
        + ', bidMultiplier-> ' + adGroupTargetList.bidMultiplier);
    } else {
      let age = adGroupTargetArray[i].target.ageTarget.age;
      let ageRange = 'UNKNOWN';
      if (age == 'GT_RANGE70_UL2') {
        ageRange = '70-';
      } else if (age.indexOf('GT_RANGE') >= 0) {
        ageRange = age.replace('GT_RANGE', '').replace('_', '-');
      }
      Logger.log('adGroupId-> ' + adGroupTargetArray[i].adGroupId
        + ', campaignId-> ' + adGroupTargetArray[i].campaignId
        + ' could not to set to age-> ' + ageRange
        + ', bidMultiplier-> ' + adGroupTargetArray[i].bidMultiplier);
    }
  }
}

Update Age targeting


function replaceAgeAndBidModifiers() {
  const accountId = AdsUtilities.getCurrentAccountId();
  const adGroupTargetArray = [
    {
      campaignId: 11111111,
      adGroupId: 222222222,
      bidMultiplier: 1.9,
      target: {
        ageTarget: {
          age: 'GT_RANGE70_UL2',
        },
        targetType: 'AGE_TARGET',
      },
    },
    {
      campaignId: 33333333,
      adGroupId: 444444444,
      bidMultiplier: 1.1,
      target: {
        ageTarget: {
          age: 'GT_RANGE25_29',
        },
        targetType: 'AGE_TARGET',
      },
    }
  ];//Multiple selections are possible
  const adGroupTargets = Display.AdGroupTargetService.replace({
    accountId: accountId,
    operand: adGroupTargetArray,
  }).rval;
  if (adGroupTargets == null) {
    Logger.log('This request could not be replaced.');
    return;
  }
  for (let i = 0; i < adGroupTargets.values.length; i++) {
    if (adGroupTargets.values[i].operationSucceeded) {
      let adGroupTargetList = adGroupTargets.values[i].adGroupTargetList;
      let age = adGroupTargetList.target.ageTarget.age;
      let ageRange = 'UNKNOWN';
      if (age == 'GT_RANGE70_UL2') {
        ageRange = '70-';
      } else if (age.indexOf('GT_RANGE') >= 0) {
        ageRange = age.replace('GT_RANGE', '').replace('_', '-');
      }
      Logger.log('adGroupId-> ' + adGroupTargetList.adGroupId
        + ', campaignId-> ' + adGroupTargetList.campaignId
        + ' replace to age-> ' + ageRange
        + ', bidMultiplier-> ' + adGroupTargetList.bidMultiplier);
    }
  }
}

Remove Age targeting


function removeAgeAndBidModifiers() {
  const accountId = AdsUtilities.getCurrentAccountId();
  const adGroupIds = [111111111, 222222222];//Empty when not specified
  const adGroupTargetsGet = Display.AdGroupTargetService.get({
    accountId: accountId,
    adGroupIds: adGroupIds,
    targetTypes: ['AGE_TARGET'],
  }).rval;
  if (adGroupTargetsGet.totalNumEntries == 0) {
    Logger.log('AdGroupTarget does not exist.');
    return;
  }
  let adGroupTargetArray = [];
  for (let i = 0; i < adGroupTargetsGet.values.length; i++) {
    const adGroupTarget =
      {
        adGroupId: adGroupTargetsGet.values[i].adGroupTargetList.adGroupId,
        campaignId: adGroupTargetsGet.values[i].adGroupTargetList.campaignId,
        target: {
          targetId: adGroupTargetsGet.values[i].adGroupTargetList.target.targetId,
          targetType: 'AGE_TARGET',
        }
      };
    adGroupTargetArray.push(adGroupTarget);
  }
  const adGroupTargets = Display.AdGroupTargetService.remove({
    accountId: accountId,
    operand: adGroupTargetArray,
  }).rval;
  for (let i = 0; i < adGroupTargets.values.length; i++) {
    if (adGroupTargets.values[i].operationSucceeded) {
      let adGroupTargetList = adGroupTargets.values[i].adGroupTargetList;
      let age = adGroupTargetList.target.ageTarget.age;
      let ageRange = 'UNKNOWN';
      if (age == 'GT_RANGE70_UL2') {
        ageRange = '70-';
      } else if (age.indexOf('GT_RANGE') >= 0) {
        ageRange = age.replace('GT_RANGE', '').replace('_', '-');
      }
      Logger.log('adGroupId-> ' + adGroupTargetList.adGroupId
        + ', campaignId-> ' + adGroupTargetList.campaignId
        + ', age-> ' + ageRange
        + ', bidMultiplier-> ' + adGroupTargetList.bidMultiplier
        + ' is removed');
    } else {
      Logger.log('adGroupId-> ' + adGroupTargetArray[i].adGroupId
        + ', campaignId-> ' + adGroupTargetArray[i].campaignId
        + ', targetId-> ' + adGroupTargetArray[i].target.targetId
        + ' could not be removed');
    }
  }
}