以下部分显示了针对关键字执行各种操作的脚本示例。
添加关键字
若要添加关键字 (keyword) ,请先获取要添加关键字 (keyword) 的广告组。 使用 AdGroupSelector 对象选择广告组。
withIds与在 方法中withCondition传递广告组的名称相比,使用 方法可提供更好的性能。
接下来,调用广告组的 newKeywordBuilder 方法以获取用于指定关键字 (keyword) 属性的生成器。 必须指定的唯一属性是关键字 (keyword) 的文本 (查看withText方法) 。 文本应包含短语匹配类型的匹配类型 (引号,完全匹配类型的方括号,广泛匹配类型) 不包含任何内容。
如果未指定 CPC 值,则默认为广告组的 CPC 值。 默认情况下,启用关键字 (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 获取实体可提供更好的性能。 使用 方法,而不是使用withConditionwithIds筛选器方法。 例如,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();
}
}
获取帐户中的所有关键字
脚本可以为帐户返回的关键字数有限制。 该限制未定义,可能会更改。 以下示例演示如何处理帐户的关键字过多的情况。 该示例首先尝试在帐户级别提取所有关键字。 如果由于“实体太多”错误而失败,它将尝试多次调用来按市场活动提取关键字,因为市场活动级别的实体通常较少。
有关使用收益关键字 (keyword) 的信息,请参阅在获取大型实体集时使用收益关键字 (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) (请参阅 KeywordSelector) 时使用方法之一forDateRange。
有关可以访问的指标列表,请参阅 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 服务。