搜索受众群体

向广告组添加搜索受众群体

function addSearchAudienceToAdGroup(adGroupName, audienceId, bidModifier = 1.5) {

  // Retrieve the ad group.
  const adGroups = AdsApp.adGroups()
      .withCondition(`ad_group.name = "${adGroupName}"`)
      .get();

  if (!adGroups.hasNext()) {
    throw new Error(`Cannot find ad group with name "${adGroupName}"`);
  }
  const adGroup = adGroups.next();
  if (adGroups.totalNumEntities() > 1) {
    console.warn(`More than one ad group with name "${adGroupName}" was ` +
    `found. Using the ad group in campaign ` +
    `"${adGroup.getCampaign().getName()}"`);
  }

  // Create the search audience.
  const operation = adGroup.targeting()
      .newUserListBuilder()
      .withAudienceId(audienceId)
      .withBidModifier(bidModifier)
      .build();

  if (!operation.isSuccessful()) {
    console.warn(`Failed to attach search audience. ` +
    `Errors: ${operation.getErrors().join(', ')}'`);
  }

  const searchAudience = operation.getResult();

  // Display the results.
  console.log(`Search audience with name ${searchAudience.getName()} and ` +
      `ID = ${searchAudience.getId().toFixed(0)} was added to ` +
      `ad group "${adGroupName}".`);
}

按名称获取广告组搜索受众群体

function getAdGroupSearchAudienceByName(campaignName, adGroupName, audienceName) {

  // Retrieve the search audience.
  const searchAudiences = AdsApp.adGroupTargeting().audiences()
      .withCondition(`campaign.name = "${campaignName}"`)
      .withCondition(`ad_group.name = "${adGroupName}"`)
      .get();

  for (const audience of searchAudiences) {
    if (audience.getName() == audienceName) {
      return audience;
    }
  }

  // Display the results.
  console.warn(`Cannot find an audience "${audienceName}" in the ad group
    "${adGroupName}" belonging to the campaign "${campaignName}".`);
}

按统计信息过滤广告组搜索受众群体

function filterAdGroupAudienceByStats() {
  // Retrieve top performing search audiences.
  const topPerformingAudiences = AdsApp.adGrouptargeting().audiences()
      .withCondition(`campaign.name = "Campaign #1"`)
      .withCondition(`ad_group.name = "Ad Group #1"`)
      .withCondition("metrics.clicks > 34")
      .forDateRange("LAST_MONTH")
      .get();

  for (const audience of topPerformingAudiences) {
    const stats = audience.getStatsFor("LAST_MONTH");
    console.log(`Search audience with ID = ${audience.getId().toFixed(0)}, ` +
        `name = "${audience.getName()}" and audience list ID = ` +
        `${audience.getAudienceId()} had ${stats.getClicks()} clicks last ` +
        `month.`);
  }
}

从广告系列中排除搜索受众群体

function addExcludedAudienceToCampaign(campaignName, audienceId) {

  // Retrieve the campaign.
  const campaigns = AdsApp.campaigns()
      .withCondition(`campaign.name = "${campaignName}"`)
      .get();

  if (!campaigns.hasNext()) {
    throw new Error(`Cannot find campaign with name "${campaignName}"`);
  }

  const campaign = campaigns.next();

  // Create the excluded audience.
  const operation = campaign.targeting()
      .newUserListBuilder()
      .withAudienceId(`${audienceId}``)
      .exclude();

  if (!operation.isSuccessful()) {
    console.warn(`Failed to exclude audience ${audienceId}. Errors: ${operation.getErrors().join(', ')}`);
  }
  const audience = operation.getResult();
  console.log(`Excluded audience "${audience.getName()}" from campaign ` +
      ``"${campaignName}".`);
}

获取为广告系列排除的搜索受众群体

function getExcludedAudiencesForCampaign(campaignName) {
  // Retrieve the campaign.
  const campaign = AdsApp.campaigns()
      .withCondition(`campaign.name = "${campaignName}"`)
      .get();

  if (!campaigns.hasNext()) {
    throw new Error(`Cannot find campaign with name "${campaignName}"`);
  }

  const campaign = campaigns.next();
  return campaign.targeting().excludedAudiences().get();
}

选择广告组定位设置

function setAdGroupTargetSetting(campaignName, adGroupName, group = "USER_INTEREST_AND_ALL", setting = "TARGET_ALL_TRUE") {
  // Retrieve the ad group.
  const adGroups = AdsApp.adGroups()
      .withCondition(`campaign.name = "${campaignName}"`)
      .withCondition(`ad_group.name = "${adGroupName}"`)
      .get();

  if (!adGroups.hasNext()) {
    throw new Error(`Cannot find ad group with name "${adGroupName}" in ` +
        `campaign "${campaignName}"`);
  }

  // Change the target setting.
  adGroup.targeting().setTargetingSetting(group, setting);
}

更新受众群体出价调节系数

function updateAudienceBidModifer(campaignName, adGroupName, audienceName, bidModifier = 1.5) {
  // Create the search audience.
  const audiences = AdsApp.adGrouptargeting().audiences()
      .withCondition(`campaign.name = "${campaignName}"`)
      .withCondition(`ad_group.name = "${adGroupName}"`)
      .get();

  for (const audience of audiences) {
    if (audience.getName() == audienceName) {
      audience.bidding().setBidModifier(bidModifier);
    }
  }
}