以下部分显示了针对广告组执行各种操作的脚本示例。
添加广告组
若要添加广告组,请先获取要向其添加广告组的市场活动。 使用 CampaignSelector 对象选择市场活动。
withIds与在 方法中withCondition传递市场活动名称相比,使用 方法可提供更好的性能。
接下来,调用市场活动的 newAdGroupBuilder 方法以获取用于指定广告组属性的生成器。 唯一必需的属性是广告组的名称 (看到 withName 方法) ,该方法在市场活动中必须是唯一的。 如果未指定 CPC 值,则默认为帐户货币的最低出价金额。 如果市场活动未指定语言,则只需指定语言;否则,它将继承市场活动的语言值。 默认情况下,广告组的状态处于暂停状态。
调用生成器的 build 方法会异步创建广告组;脚本在脚本终止之前或调用生成操作的方法之一时添加广告组。 有关此过程的信息,请参阅 什么是生成器?
function main() {
// The ID of the campaign to add the ad groups to.
// IDs in Scripts are string integers.
var campaignId = 'CAMPAIGN ID GOES HERE';
var campaign = getCampaign(campaignId);
// Ad groups to add.
var adGroups = [];
adGroups.push({
name : 'AD GROUP NAME GOES HERE',
cpc : 2.25,
language : 'English' // Required if the campaign doesn't specify a language
});
adGroups.push({
name : 'AD GROUP NAME GOES HERE',
cpc : 1.25,
language : 'English' // Required if the campaign doesn't specify a language
});
var operations = [];
if (campaign != null)
{
for (var adGroup of adGroups) {
var operation = addAdGroup(
campaign,
adGroup.name,
adGroup.cpc,
adGroup.language);
operations.push(operation);
}
}
else {
Logger.log("Unable to retrieve campaign, " + campaignId);
}
checkBuildStatus(operations, adGroups);
}
// Get the campaign using its ID.
function getCampaign(id) {
var iterator = AdsApp.campaigns()
.withIds([id])
.get();
// Return the campaign if it exists; otherwise, null.
if (iterator.hasNext()) {
return iterator.next();
}
else {
return null;
}
}
// Add the ad group to the specified campaign.
// Returns the builder's operation object, which you use to
// check the status of the add operation.
function addAdGroup(campaign, name, cpc, language) {
return campaign.newAdGroupBuilder()
.withName(name)
.withCpc(cpc)
.withLanguage(language)
.build();
}
// Check the ad group's build status.
function checkBuildStatus(operations, adGroups) {
for (var i = 0; i < operations.length; i++) {
if (!operations[i].isSuccessful()) {
for (var error of operations[i].getErrors()) {
Logger.log(`Failed to add, ${adGroups[i].name}. Error: ${error}`);
}
}
}
}
获取所有广告组
若要获取帐户中的所有广告组,请首先调用 AdsApp 对象的 adGroups 方法来获取 选择器。 然后,调用选择器的 get 方法以获取用于循环访问广告组列表的 迭代器 。 由于该示例未指定任何筛选器,选择器将返回帐户中的所有广告组。 若要确定迭代器中的广告组数,请调用迭代器的 totalNumEntities 方法。
function main() {
// Gets all ad groups in the account.
var iterator = AdsApp.adGroups().get();
// Iterates through the list of ad groups and logs
// each ad group's name.
while (iterator.hasNext()) {
var adGroup = iterator.next();
}
}
按名称获取广告组
若要按名称获取广告组,请首先调用 AdsApp 对象的 adGroups 方法来获取 选择器。 选择器包含许多用于筛选广告组列表的筛选方法。
withCondition使用 方法筛选特定广告组名称的广告组。 请注意,操作数和运算符区分大小写。
接下来,调用选择器的 get 方法以获取 迭代器。 市场活动中的广告组名称是唯一的,但多个市场活动可能会有同名的广告组。 因此,如果仅按名称进行筛选,则迭代器可能包含多个广告组。
如果要从特定市场活动按名称获取广告组,请包括一个 withCondition 方法,该方法指定市场活动的名称 (CampaignName = '<campaignnamegoeshere>') 。
function main() {
// The name of the ad group to get.
var adGroupName = 'AD GROUP NAME GOES HERE';
// Get the ad groups with the specified name.
var iterator = AdsApp.adGroups()
.withCondition(`Name = '${adGroupName}'`)
.get();
// Need a loop because multiple campaigns can have
// an ad group with the same name.
while (iterator.hasNext()) {
var adGroup = iterator.next();
}
}
按 ID 获取广告组
如果有权访问广告组的 ID,请改用它。 使用 ID 获取实体可提供更好的性能。 使用 方法,而不是使用withConditionwithIds筛选器方法。 例如,withIds(['12345'])。
function main() {
var adGroupId = '12345';
var iterator = AdsApp.adGroups()
.withIds([adGroupId])
.get();
if (iterator.hasNext()) {
var adGroup = iterator.next();
}
}
从特定市场活动按名称获取广告组
function main() {
var adGroupName = 'AD GROUP NAME GOES HERE';
var campaignName = "CAMPAIGN NAME GOES HERE";
var iterator = AdsApp.adGroups()
.withCondition(`Name = '${adGroupName}'`)
.withCondition(`CampaignName = '${campaignName}'`)
.get();
if (iterator.hasNext()) {
var adGroup = iterator.next();
}
}
获取广告组的性能数据
若要获取广告组的性能指标,请调用广告组的 getStats 方法。 获取广告组时,需要指定所需指标数据的日期范围。 可以使用预定义文本(如 LAST_MONTH 或 TODAY)或开始日期和结束日期指定日期范围。 若要指定日期范围,请在选择广告组时使用方法之 forDateRange 一 (请参阅 AdGroupSelector) 。
有关可以访问的指标列表,请参阅 Stats 对象。
function main() {
var campaignName = 'CAMPAIGN NAME GOES HERE';
var adGroupName = 'AD GROUP NAME GOES HERE';
// Get the ad group. You need to specify the date range of the
// performance data you want to get.
var iterator = AdsApp.adGroups()
.forDateRange('LAST_WEEK')
.withCondition(`Name = '${adGroupName}'`)
.withCondition(`CampaignName = '${campaignName}'`)
.get();
// If the ad group is found, log some metrics.
if (iterator.hasNext()) {
var adGroup = iterator.next();
var metrics = adGroup.getStats(); // Gets the performance metrics.
}
}
暂停广告组
添加广告组时,其状态默认为“已暂停”。 若要启用广告组,请调用广告组的 enable 方法。 若要将广告组的状态更改为“已暂停”,请调用广告组的 pause 方法。 若要确定广告组的状态,请调用广告组的 isEnabled、 isPaused和 isRemoved 方法。
function main() {
var campaignName = 'CAMPAIGN NAME GOES HERE';
var adGroupName = 'AD GROUP NAME GOES HERE';
// Get the ad group.
var iterator = AdsApp.adGroups()
.withCondition(`Name = '${adGroupName}'`)
.withCondition(`CampaignName = '${campaignName}'`)
.get();
if (iterator.hasNext()) {
var adGroup = iterator.next();
adGroup.pause();
}
}