Разработка performance-стратегии продвижения — полное руководствоскачайте бесплатно

Формирование фраз с разными видами соответствия

function main() {
    /*
     Режимы обработки:1. Добавляет новую фразу с плюсом С УДАЛЕНИЕМ исходного
     купить дом ->+купить +дом

     2. Сделать копию фразы с плюсами БЕЗ УДАЛЕНИЯ исходного
     купить дом -> купить дом
     +купить +дом

     3. Сделать копию фразы в 3 вариациях С УДАЛЕНИЕМ исходного
     купить дом ->+купить +дом
     "купить дом"
     [купить дом]

     4. Сделать копию фразы в 3 вариациях БЕЗ УДАЛЕНИЯ исходного
     купить дом -> купить дом
     +купить +дом
     "купить дом"
     [купить дом]
     *///! Веберите режим обработки:
    var TYPE =4;

    //! Обрабатывать фразы, у которых кликов (за посл. месяц) БОЛЬШЕ, чем:
    var CLICKS =100;

    var adGroupIterator = AdWordsApp.adGroups()
        .withCondition("CampaignStatus = ENABLED")
        .withCondition("CampaignName DOES_NOT_CONTAIN_IGNORE_CASE 'КМС'")
        .withCondition("AdGroupStatus = ENABLED")
        .get();

    Logger.log('Всего найдено активных групп: ' + adGroupIterator.totalNumEntities());
    while (adGroupIterator.hasNext()) {

        var adGroup = adGroupIterator.next();
        var newKeywords = [];

        Logger.log('Группа: ' + adGroup.getName());

        var keywordIterator = adGroup.keywords().withCondition("Status = ENABLED").get();

        while (keywordIterator.hasNext()) {
            var keyword = keywordIterator.next();
            var kname = keyword.getText();

            //пропускаем кейворды если кликов за посл 30 дней меньше CLICKS (указан выше)
            if (keyword.getStatsFor('LAST_30_DAYS').getClicks() <= CLICKS) continue;

            if (kname.indexOf('+') ==-1 &&
                kname.indexOf('"') ==-1 &&
                kname.indexOf('[') ==-1 &&
                kname.indexOf(']')) {

                Logger.log('Найден ключ без спецсимволов: ' + kname);

                if (TYPE ==1|| TYPE ==2|| TYPE ==3|| TYPE ==4) {
                    newKeywords.push('+'+ kname.replace(//g, ' +').replace(/-/g, ' +'));
                }

                if (TYPE ==3|| TYPE ==4) {
                    newKeywords.push('"'+ kname +'"'.replace(/-/g, ' '));
                    newKeywords.push('['+ kname +']'.replace(/-/g, ' '));
                }

                if (TYPE ==1|| TYPE ==3) {
                    keyword.remove();
                    Logger.log('Удален!');
                }

            }
        }

        if (newKeywords.length) Logger.log('Добавлены следующие новые ключи:');
        for (var i =0; i < newKeywords.length; i++) {

            Logger.log(newKeywords[i]);
            var keywordOperation = adGroup.newKeywordBuilder()
                .withText(newKeywords[i])
                .build();
            //var keyword = keywordOperation.getResult();
            //тут можно новому keyword указать цену и прочее, 
            //а можно дождать когда запустится скрипт-биддер и всё сделает сам

        }

    }

}