共用方式為


管理關鍵字的腳本範例

下列各節示範針對關鍵字執行各種動作的腳本範例。

新增關鍵字

若要新增關鍵字,請先取得要新增關鍵字的廣告群組。 使用 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 方法。 若要判斷關鍵字的狀態,請呼叫 關鍵字的 isEnabledisPaused 方法。

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 服務