以下部分展示了对关键字执行各种操作的脚本示例。
添加关键字
若要添加关键字 (keyword) ,请首先获取要向其中添加关键字 (keyword) 的广告组。 使用 AdGroupSelector 对象选择广告组。 使用该 withIds 方法比在方法中 withCondition 传递广告组的名称具有更好的性能。
接下来,调用广告组的 newKeywordBuilder 方法以获取用于指定关键字 (keyword) 属性的生成器。 您必须指定的唯一属性是关键字 (keyword) 的文本 (查看withText方法) 。 文本应包含匹配类型, (短语匹配类型使用方括号表示完全匹配类型,对于广泛匹配类型) ,文本应包含任何内容。
如果未指定每次点击费用值,则默认为广告组的每次点击费用值。 默认情况下,启用关键字 (keyword) 的状态。
调用生成器的方法build将异步创建关键字 (keyword) ;脚本会在脚本终止前的某个时间点添加关键字 (keyword) ,或者如果您调用了生成操作的方法之一。 有关此过程的信息,请参阅 什么是构建器?
function main() {
// The ID of the ad group to add the keywords to.
// IDs in Scripts are string integers.
var adGroupId = 'AD GROUP ID GOES HERE';
var adGroup = getAdGroup(adGroupId);
// Keywords to add. Update as appropriate.
var keywords = [];
keywords.push({
text : "keyword 1",
cpc : 1.25,
finalUrl : 'http://www.example.com'
});
keywords.push({
text : "keyword 2",
cpc : 1.5,
finalUrl : 'http://www.example.com'
});
var operations = [];
if (adGroup != null)
{
for (var keyword of keywords) {
var operation = addKeyword(
adGroup,
keyword.text,
keyword.cpc,
keyword.finalUrl);
operations.push(operation);
}
}
else {
Logger.log("Unable to retrieve ad group, " + adGroupId);
}
checkBuildStatus(operations, keywords);
}
// Get the ad group using its ID.
function getAdGroup(id) {
var iterator = AdsApp.adGroups()
.withIds([id])
.get();
// Return the ad group if it exists; otherwise, null.
if (iterator.hasNext()) {
return iterator.next();
}
else {
return null;
}
}
// Add the keyword to the specified ad group.
function addKeyword(adGroup, text, cpc, finalUrl) {
return adGroup.newKeywordBuilder()
.withText(text)
.withCpc(cpc)
.withFinalUrl(finalUrl)
.build();
}
// Check the keyword's build status.
function checkBuildStatus(operations, keywords) {
for (var i = 0; i < operations.length; i++) {
if (!operations[i].isSuccessful()) {
for (var error of operations[i].getErrors()) {
Logger.log(`Failed to add, ${keywords[i].text}. Error: ${error}`);
}
}
}
}
暂停关键字 (keyword)
添加关键字 (keyword) 时,其状态默认为“启用”。 要暂停关键字 (keyword) ,请调用关键字 (keyword) 的方法pause。 若要确定关键字 (keyword) 的状态,请调用关键字的 isEnabled 和 isPaused 方法。
function main() {
var campaignName = 'CAMPAIGN NAME GOES HERE';
var adGroupName = 'AD GROUP NAME GOES HERE';
var keywordText = 'KEYWORD TEXT GOES HERE';
var iterator = AdsApp.keywords()
.withCondition(`Text = '${keywordText}'`)
.withCondition(`AdGroupName = '${adGroupName}'`)
.withCondition(`CampaignName = '${campaignName}'`)
.get();
while (iterator.hasNext()) {
var keyword = iterator.next();
keyword.pause();
}
}
获取广告组中的所有关键字
要获取广告组中的所有关键字,请首先调用 AdsApp 对象的方法 keywords 来获取 选择器。 使用 withCondition 该方法指定广告组和市场活动。 然后,调用选择器的方法 get 以获取用于循环访问关键字列表的 迭代器 。 要确定迭代器中的关键字数,请调用迭代器的方法 totalNumEntities 。
如果有权访问关键字 (keyword) ID,请改用它们。 使用 ID 获取实体可提供更好的性能。 不要使用 withCondition 筛选方法,而是使用该 withIds 方法。 例如,withIds(['12345'])。 可以使用 ID 检索的实体数量有限制。
function main() {
var campaignName = 'CAMPAIGN NAME GOES HERE';
var adGroupName = 'AD GROUP NAME GOES HERE';
var iterator = AdsApp.keywords()
.withCondition(`AdGroupName = '${adGroupName}'`)
.withCondition(`CampaignName = '${campaignName}'`)
.get();
while (iterator.hasNext()) {
var keyword = iterator.next();
}
}
获取帐户中的所有关键字
脚本可以为帐户返回的关键字数是有限制的。 该限制未定义,可能会更改。 以下示例演示了如何处理帐户关键字过多的情况。 该示例首先尝试在帐户级别提取所有关键字。 如果由于“实体太多”错误而失败,它会尝试多次调用以按市场活动提取关键字,因为市场活动级别的实体通常较少。
有关使用 yield 关键字 (keyword) 的信息,请参阅在获取大型实体集时使用 yield 关键字 (keyword) 。
function* getEntities() {
const applyConditions = _ => _
.withCondition('CampaignStatus = ENABLED')
.withCondition('AdGroupStatus = ENABLED')
.withCondition('Status = ENABLED')
.withCondition("CombinedApprovalStatus = DISAPPROVED");
try {
// Get the account's keywords.
const keywords = applyConditions(AdsApp.keywords()).get();
while (keywords.hasNext()) {
yield keywords.next();
}
} catch (e) {
if (!e.message.startsWith('There are too many entities')) {
throw e;
}
// If there are too many keywords at the account level,
// get keywords by campaigns under the account.
const campaigns = AdsApp.campaigns().get();
while (campaigns.hasNext()) {
const campaign = campaigns.next();
const keywords = applyConditions(campaign.keywords()).get();
while (keywords.hasNext()) {
yield keywords.next();
}
}
}
}
获取关键字 (keyword) 的性能数据
若要获取关键字 (keyword) 的性能指标,请调用关键字 (keyword) 的 getStats 方法。 获取关键字 (keyword) 时,需要指定所需指标数据的日期范围。 可以使用预定义的文本(如 LAST_MONTH 或 TODAY)或开始日期和结束日期指定日期范围。 若要指定日期范围,请在选择关键字 (keyword) (时使用其中一种forDateRange方法,请参阅 KeywordSelector) 。
有关可以访问的指标列表,请参阅 Stats 对象。
function main() {
var campaignName = 'CAMPAIGN NAME GOES HERE';
var adGroupName = 'AD GROUP NAME GOES HERE';
var keywordText = 'KEYWORD TEXT GOES HERE';
// Get the keyword. You need to specify the date range of the
// performance data you want to get.
var iterator = AdsApp.keywords()
.forDateRange('LAST_WEEK')
.withCondition(`Text = '${keywordText}'`)
.withCondition(`AdGroupName = '${adGroupName}'`)
.withCondition(`CampaignName = '${campaignName}'`)
.get();
// If the keyword is found, log some metrics.
if (iterator.hasNext()) {
var keyword = iterator.next();
var metrics = keyword.getStats(); // Gets the performance metrics.
}
}
更新关键字 (keyword) 的出价值。
有关如何更新关键字 (keyword) 的出价值的示例,请参阅调用 Google 服务。