添加加大型文字广告
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;
}