管理關鍵字的腳本範例
下列各節示範針對關鍵字執行各種動作的腳本範例。
新增關鍵字
若要新增關鍵字,請先取得要新增關鍵字的廣告群組。 使用 AdGroupSelector 物件來選取廣告群組。 使用 方法 withIds
可提供比在 方法中 withCondition
傳遞廣告群組名稱更好的效能。
接下來,呼叫廣告群組的 newKeywordBuilder 方法,以取得您用來指定關鍵字屬性的產生器。 您唯一必須指定的屬性是關鍵字的文字 (查看 withText
方法) 。 文字應該包含比對類型 (片語比對類型的引號、完全相符類型的方括弧,不包含廣泛比對類型) 。
如果您未指定一個[檢視] 值,則會預設為廣告群組的 [檢視] 值。 根據預設,會啟用關鍵字的狀態。
呼叫產生器的 build
方法會以非同步方式建立 關鍵字;腳本會在腳本終止之前的某個時間點加入 關鍵字,或者如果您呼叫其中一個建置作業的方法。 如需此程式的相關資訊,請 參閱什麼是產生器?
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}`);
}
}
}
}
暫停關鍵字
當您新增關鍵字時,其狀態預設為 [已啟用]。 若要暫停關鍵字,請呼叫 關鍵字的 pause
方法。 若要判斷關鍵字的狀態,請呼叫 關鍵字的 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
方法。
如果您有關鍵詞識別碼的存取權,請改用它們。 使用識別碼取得實體可提供更好的效能。 請使用 方法, withIds
而不是使用 withCondition
篩選方法。 例如,withIds(['12345'])
。 您可以使用識別碼擷取的實體數目有一些限制。
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 關鍵字的相關資訊,請參 閱取得大型實體集時使用 yield 關鍵字。
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();
}
}
}
}
取得關鍵字的效能資料
若要取得關鍵字的效能計量,請呼叫關鍵字的 getStats 方法。 當您取得 關鍵字時,必須指定所要計量資料的日期範圍。 您可以使用預先定義的常值來指定日期範圍,例如LAST_MONTH或 TODAY,或是開始和結束日期。 若要指定日期範圍,請在選取關鍵字時使用其中一 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.
}
}
更新關鍵字的 bid 值。
如需示範如何更新關鍵字的報價值的範例,請參閱 呼叫 Google 服務。