Если вы постепенно чистите неэффективные критерии таргетинга, или просто заливаете новую группу объявлений — может случится такая ситуация когда группа есть, объявления есть, а таргетинга — нет. В такой ситуации группа якобы активна, но не работает.

Вот скрипт который проверяет наличие таких групп:

function main() {
    // Собираем активные GDN кампании
    var campaignActiveReport = 'SELECT campaign.id, segments.ad_network_type ' +
        'FROM campaign ' +
        'WHERE segments.ad_network_type = "CONTENT" ' +
        'AND campaign.status = "ENABLED"';
    var report = AdsApp.search(campaignActiveReport, {
        apiVersion: 'v8'
    });
    var campaignsIDs = [];
    while (report.hasNext()) {
        var row = report.next();
        var campaign_id = row.campaign.id;
        // собираем айдишники кампаний
        campaignsIDs.push(campaign_id);
    }
    // убираем возможные дубли
    var campaignsIDs = unique(campaignsIDs).sort();

    if (campaignsIDs.length != +0) {
        var campaigns = AdsApp.campaigns()
            .withIds(campaignsIDs)
            .get();
        while (campaigns.hasNext()) {
            var campaign = campaigns.next();
            // получаем активные группы которые за вчера не имели показов
            var adGroupSelector = campaign
                .adGroups()
                .withCondition('Status = ENABLED')
                .withCondition('Impressions = 0')
                .forDateRange('YESTERDAY');
            var adGroupIterator = adGroupSelector.get();
            while (adGroupIterator.hasNext()) {
                var adGroup = adGroupIterator.next();
                // Получаем все списки таргетинга
                var adGroupAudiences = adGroup.display().audiences().get();
                var adGroupKeywords = adGroup.display().keywords().get();
                var adGroupPlacements = adGroup.display().placements().get();
                var adGroupTopics = adGroup.display().topics().get();

                if ((!adGroupAudiences.hasNext()) &&
                    (!adGroupKeywords.hasNext()) &&
                    (!adGroupPlacements.hasNext()) &&
                    (!adGroupTopics.hasNext())) {
                    // Если ни один из видов таргетинга не обнаружен - пишем в лог сообщение
                    var string = getCurrentAccountDetails() + ' - ' + adGroup.getCampaign().getName() + ' - ' + adGroup.getName() + ' - отсутствует таргетинг!';
                    // Сюда легко можно приделать функцию репорта в мессенджер или на почту
                    Logger.log(string);
                }
            }
        }
    }
}
function unique(arr) { // убираем повторы
    var tmp = {};
    return arr.filter(function (a) {
        return a in tmp ? 0 : tmp[a] = 1;
    });
}

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


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