Если вы постепенно чистите неэффективные критерии таргетинга, или просто заливаете новую группу объявлений — может случится такая ситуация когда группа есть, объявления есть, а таргетинга — нет. В такой ситуации группа якобы активна, но не работает.
Вот скрипт который проверяет наличие таких групп:
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;
});
}