Гугл выпустил обновления, из-за которого модификатор широкого соответствия больше не нужен. Теперь его функционал заменит фразовое соответствие — https://support.google.com/google-ads/answer/10286719?hl=ru

Понятное дело что гугл сделал какую-то «обратную поддержку» этой ситуации, но лучше все-таки уйти от старого формата раньше, чем позже. Начать копить статистику во фразовом соответсвии, избежать дублирования и т.д. и т.п.

Я для этого написал простенький скрипт:

function main() {
    // выбираем не-удаленные кампании
    var campaignSelector = AdsApp
        .campaigns()
        .withCondition('Status != REMOVED')
        .orderBy('Impressions DESC')
        .forDateRange('LAST_30_DAYS');
    var campaignIterator = campaignSelector.get();
    while (campaignIterator.hasNext()) {
        var campaign = campaignIterator.next();
        // в них выбираем не-удаленные группы
        var adGroupSelector = campaign
            .adGroups()
            .withCondition('Status != REMOVED')
            .orderBy('Impressions DESC')
            .forDateRange('LAST_30_DAYS');
        var adGroupIterator = adGroupSelector.get();
        while (adGroupIterator.hasNext()) {
            var adGroup = adGroupIterator.next();
            Logger.log(campaign.getName() + ' - ' + adGroup.getName());
            // в них выбираем не-удаленные фразы, в широком соответствии, с модификатором
            var keywordSelector = adGroup
                .keywords()
                .withCondition('KeywordMatchType = BROAD')
                .withCondition('Text CONTAINS_IGNORE_CASE "+"')
                .withCondition('Status != REMOVED')
                .orderBy('Impressions DESC')
                .forDateRange('LAST_30_DAYS');
            var keywordIterator = keywordSelector.get();
            while (keywordIterator.hasNext()) {
                var keyword = keywordIterator.next();
                var key_text = keyword.getText().replace(/\+/gmi, '');
                // создаем новый ключ во фразовом соответствии
                var newKeyResult = adGroup.newKeywordBuilder()
                    .withText('"' + key_text + '"')
                    .build();
                // а старый ключ - удаляем
                if (newKeyResult.isSuccessful()) {
                    keyword.remove();
                }
            }
        }
    }
}

Ещё интересное


Добавить комментарий