广告
    
    
      
    
    
      
      使用集合让一切井井有条
    
    
      
      根据您的偏好保存内容并对其进行分类。
    
  
    
  
      
    
  
  
  
  
  
    
    
    
  
  
    
    
    
添加加大型文字广告
function addExpandedTextAd(adGroupName,campaignName) {
  const campaignIterator = AdsApp.campaigns()
      .withCondition(`campaign.name = "${campaignName}"`)
      .get();
  if (!campaignIterator.hasNext()){
      throw new error (`No campaign found with name: "${campaignname}"`);
  }
  const adGroupIterator = AdsApp.adGroups()
      .withCondition(`ad_group.name = "${adGroupName}"`)
      .get();
  if (!adGroupIterator.hasNext()){
      throw new error (`No ad group found with name: "${adGroupName}"`);
  }
  const adGroup = adGroupIterator.next();
  adGroup.newAd().expandedTextAdBuilder()
    .withHeadlinePart1('First headline of ad')
    .withHeadlinePart2('Second headline of ad')
    .withHeadlinePart3('Third headline of ad')
    .withDescription('First Ad description')
    .withDescription2('Second Ad description')
    .withPath1('path1')
    .withPath2('path2')
    .withFinalUrl('http://www.example.com')
    .build();
  // ExpandedTextAdBuilder has additional options.
  // For more details, see
  // https://developers.google.com/google-ads/scripts/docs/reference/adsapp/adsapp_expandedtextadbuilder
}
添加图片广告
function addImageAd(adGroupName,imageUrl,imageName) {
   const imageBlob = UrlFetchApp.fetch(imageUrl).getBlob();
   const mediaOperation = AdsApp.adMedia().newImageBuilder()
    .withName(`${imageName}`)
    .withData(imageBlob)
    .build();
  const image = mediaOperation.getResult();
  if (!image.isSuccessful()) {
   throw new Error(`Media could not be created from url: "${imageUrl}"`)
  }
  const adGroupIterator = AdsApp.adGroups()
      .withCondition(`ad_group.name = "${adGroupName}"`)
      .get();
  if (!adGroupIterator.hasNext()) {
    throw new Error(`No ad group found with name: "${adGroupName}"`);
  }
  if (adGroupIterator.totalNumEntities() > 1) {
    console.warn(`Multiple ad groups named "${name}" found. Using the one
    from campaign "${adGroup.getCampaign().getName()}".`);
  }
  const mediaIterator = AdsApp.adMedia().media()
      .withCondition(`media_file.name = "${imageName}"`)
      .get();
  if (!mediaIterator.hasNext()) {
    throw new Error(`No media found with name: "${imageName}"`);
  }
  const adGroup = adGroupIterator.next();
  const image2 = mediaIterator.next();
  adGroup.newAd().imageAdBuilder()
    .withName('Ad name')
    .withImage(image2)
    .withDisplayUrl('http://www.example.com')
    .withFinalUrl('http://www.example.com')
    .build();
  // ImageAdBuilder has additional options.
  // For more details, see
  // https://developers.google.com/google-ads/scripts/docs/reference/adsapp/adsapp_imageadbuilder
}
添加自适应展示广告
// You create responsive display ads in two steps:
//   1. Create or retrieve assets (marketing images, square marketing images,
//      optional logos, optional landscape logos, and optional YouTube videos)
//   2. Create the ad.
//
// The following function assumes you have not already created named assets.
function addResponsiveDisplayAd(campaignName,adGroupName) {
  // If you have multiple adGroups with the same name, this snippet will
  // pick an arbitrary matching ad group each time. In such cases, just
  // filter on the campaign name as well:
  //
  // AdsApp.adGroups()
  //     .withCondition(`ad_group.name = "${adGroupName}"`)
  //     .withCondition(`campaign.name = "${campaignName}"`)
  const adGroupIterator = AdsApp.adGroups()
      .withCondition(`ad_group.name = "${adGroupName}"`)
      .get();
  if (!adGroupIterator.hasNext()) {
    throw new Error(`No ad group found with name: ${adGroupName}`);
  }
  // If you have already created named image assets, select them like this:
  //
  // const marketingImages = [];
  // const marketingImageIterator = AdsApp.adAssets()
  //     .assets()
  //     .withCondition(`ad_group_ad.ad.name IN ("INSERT_FIRST_ASSET_NAME_HERE",
  //                              "INSERT_SECOND_ASSET_NAME_HERE")`)
  //     .get();
  // while (marketingImageIterator.hasNext()) {
  //   marketingImages.push(marketingImageIterator.next());
  // }
  const adGroup = adGroupIterator.next();
  const adGroupBuilder = adGroup.newAd()
    .responsiveDisplayAdBuilder()
    .withBusinessName('Your business name')
    .withFinalUrl('http://www.example.com')
    .withHeadlines(['First headline', 'Second headline'])
    .withLongHeadline('Long Headline')
    .withDescriptions(
      ['First description', 'Second description', 'Third description']);
  // If you selected assets with a snippet as shown above, then provide those
  // assets here like this:
  //
  // adGroupBuilder = adGroupBuilder.withMarketingImages(marketingImages);
  adGroupBuilder
    .addMarketingImage(
      buildImageAsset("rectangular image asset", "https://goo.gl/3b9Wfh"))
    .addSquareMarketingImage(
      buildImageAsset("square image asset", "https://goo.gl/mtt54n"))
    .build();
  // ResponsiveDisplayAdBuilder has additional options.
  // For more details, see
  // https://developers.google.com/google-ads/scripts/docs/reference/adsapp/adsapp_responsivedisplayadbuilder
}
function buildImageAsset(assetName, imageUrl) {
  const imageBlob = UrlFetchApp.fetch(imageUrl).getBlob();
  return AdsApp.adAssets().newImageAssetBuilder()
      .withData(imageBlob)
      .withName(assetName)
      .build()
      .getResult();
}
暂停广告组中的广告
function pauseAdInAdGroup(adGroupName) {
  const adGroupIterator = AdsApp.adGroups()
    .withCondition(`ad_group.name = "${adGroupName}"`)
    .get();
  if (!adGroupIterator.hasNext()) {
    throw new Error(`No ad group found with name: "${adGroupName}"`);
  }
  const adGroup = adGroupIterator.next();
  const adsIterator = adGroup.ads().get();
  if (!adsIterator.hasNext()) {
    throw new Error(`No ads found in ad group: "${adGroupName}"`);
  }
  const ad = adsIterator.next();
  ad.pause();
}
在广告组中获取加大型文字广告迭代器
function getExpandedTextAdsIteratorInAdGroup(adGroupName) {
  const adGroupIterator = AdsApp.adGroups()
      .withCondition(`ad_group.name = "${adGroupName}"`)
      .get();
  if (!adGroupIterator.hasNext()) {
    throw new Error(`No ad group found with name: "${adGroupName}"`);
  }
  const adGroup = adGroupIterator.next();
  // You can filter for ads of a particular type, using the AdType selector.
  // See https://developers.google.com/google-ads/scripts/docs/reference/adsapp/adsapp_ad#getType_0
  // for possible values.
  const expandedTextAdsIterator = adGroup.ads()
    .withCondition(`ad_group_ad.ad.type = "EXPANDED_TEXT_AD"`)
    .get();
  if (!expandedTextAdsIterator.hasNext()) {
    throw new Error(`No expanded text ads found in ad group: "${adGroupName}"`);
  }
  return expandedTextAdsIterator;
}
获取广告组中的文字广告迭代器
function getTextAdsIteratorInAdGroup(adGroupName) {
  const adGroupIterator = AdsApp.adGroups()
      .withCondition(`ad_group.name = "${adGroupName}"`)
      .get();
  if (!adGroupIterator.hasNext()) {
    throw new Error(`No ad group found with name: "${adGroupName}"`);
  }
  const adGroup = adGroupIterator.next();
  // You can filter for ads of a particular type, using the AdType selector.
  // See https://developers.google.com/google-ads/scripts/docs/reference/adsapp/adsapp_ad#getType_0
  // for possible values.
  const textAdsIterator = adGroup.ads()
    .withCondition(`ad_group_ad.ad.type = "TEXT_AD"`)
    .get();
  if (!textAdsIterator.hasNext()) {
    throw new Error(`No text ads found in ad group: "${adGroupName}"`);
  }
  return textAdsIterator;
}
获取广告组中广告的统计信息
function getAdGroupAdStats(adGroupName) {
  const adGroupIterator = AdsApp.adGroups()
    .withCondition(`ad_group.name = "${adGroupName}"`)
    .get();
  if (!adGroupIterator.hasNext()) {
    throw new Error(`No ad group found with name: "${adGroupName}"`);
  }
  const adGroup = adGroupIterator.next();
    // If you want to restrict your search to some ads only, then you could
    // apply a label and retrieve ads as
    //
    //   const label = AdsApp.labels()
    //     .withCondition(`ad_group_ad_label.name ="INSERT_LABEL_NAME_HERE"`)
    //     .get()
    //     .next();
    //   const adsIterator = label.ads().get();
  const adsIterator = adGroup.ads().get();
  if (!adsIterator.hasNext()) {
    throw new Error(`No ads found in ad group: "${adGroupName}"`);
  }
  const ad = adsIterator.next();
  // You can also request reports for pre-defined date ranges. See
  // https://developers.google.com/google-ads/api/docs/query/date-ranges
  // DateRangeLiteral section for possible values.
  const stats = ad.getStatsFor('LAST_MONTH');
  console.log(`${adGroup.getName()},
  ${stats.getClicks()},
  ${stats.getImpressions()}`);
}
获取广告组中的自适应展示广告
function getResponsiveDisplayAdIteratorInAdGroup(adGroupName) {
  const adGroupIterator = AdsApp.adGroups()
      .withCondition(`ad_group.name = "${adGroupName}"`)
      .get();
  if (!adGroupIterator.hasNext()) {
    throw new Error(`No ad group found with name: ${adGroupName}`);
  }
  const adGroup = adGroupIterator.next();
  const responsiveDisplayAdsIterator = adGroup.ads()
      .withCondition(`ad_group_ad.ad.type IN ("RESPONSIVE_DISPLAY_AD",
        "LEGACY_RESPONSIVE_DISPLAY_AD")`)
      .get();
  if (!responsiveDisplayAdsIterator.hasNext()) {
    throw new Error(`No Responsive Display ads found in ad group:
    "${adGroupName}"`);
  }
  return responsiveDisplayAdsIterator;
}
  
  
  
  
    
  
 
  
    
      
      
    
    
      
    
    
  
       
    
    
      
    
  
  
  如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
  最后更新时间 (UTC):2025-08-21。
  
  
  
    
      [[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-08-21。"],[],[]]