AdWords
Сейчас в сети: 420
Сейчас в сети: 420
Советы и вопросы по использованию скриптов AdWords
Подсказки
star_border
Ответить

Создание более 100 одинаковых скриптов для 100 кампаний

Студент ✭ ✭

Добрый вечер,

 

такая проблема, существует 100 кампаний в которых около 200 групп объявлений.Одна группа - один товар. Есть скрипт который проверяет все ссылки на наличие или отсутствие товара и отключает/включает кампании. Лимит времени работ скрипта 30 минут и он просто не успевает посмотреть минимум 2 кампании, поэтому необходимо создать 100 одинаковых скриптов и привязать с помощью ярлыков их к кампаниям.

 

Есть ли способ массово создать один и тот же скрипт?

1 Ответ экспертаverified_user

Re: Создание более 100 одинаковых скриптов для 100 кампаний

Ведущий участник

Что то не так мне кажется с выполнением скрипта. Долго выполняется. Скрипты не копируются , и им каждому надо дать разрешение. В вашем случае мне кажется стоит меня логику скрипта или использовать внешние сервисы, к50, алитикс, и т п

C уважением,
Павел

Создание более 100 одинаковых скриптов для 100 кампаний

Студент ✭ ✭

Подскажите где почитать об этом? Спасибо. Скрипт работает, но есть компании которые он очень долго проверяет 

 

 

 

/************************************
* Item Out Of Stock Checker
* Version 1.2
* ChangeLog v1.2
* - ONLY_ACTIVE is used to filter campaigns and adgroups only. All Keywords and Ads in the AdGroups will
* be checked which solves the "once disabled, always disabled" issue.
* - Updated call to get the Final Urls. Now calls getFinalUrl and getMobileFinalUrl instead of getDestinationUrl
* - OUT_OF_STOCK_TEXTS can now contain multiple things to check for.
* - If the CAMPAIGN_LABEL does not exist, it is ignored with a warning.
* ChangeLog v1.1 - Filtered out deleted Campaigns and AdGroups
* Created By: Russ Savage
* FreeAdWordsScripts.com
***********************************/
var URL_LEVEL = 'Ad'; // or Keyword
var ONLY_ACTIVE = true; // set to false to check keywords or ads in all campaigns (paused and active)
var CAMPAIGN_LABEL = '11'; // set this if you want to only check campaigns with this label
var STRIP_QUERY_STRING = true; // set this to false if the stuff that comes after the question mark is important
var WRAPPED_URLS = true; // set this to true if you use a 3rd party like Marin or Kenshoo for managing you account
// This is the specific text (or texts) to search for
// on the page that indicates the item
// is out of stock. If ANY of these match the html
// on the page, the item is considered "out of stock"
var OUT_OF_STOCK_TEXTS = ['Ошибка 404'];

function main() {
var toStop = [];
var toEnable = [];
var alreadyCheckedUrls = {};
var iter = buildSelector().get();
while(iter.hasNext()) {
var entity = iter.next();
var urls = [];
if(entity.urls().getFinalUrl()) {
urls.push(entity.urls().getFinalUrl());
}
if(entity.urls().getMobileFinalUrl()) {
urls.push(entity.urls().getMobileFinalUrl());
}
for(var i in urls) {
var url = cleanUrl(urls[i]);
if(alreadyCheckedUrls[url]) {
if(alreadyCheckedUrls[url] === 'out of stock') {
entity.getAdGroup().pause();
} else {
entity.getAdGroup().enable();
}
} else {
var htmlCode;
var serverCode;
try {
var resp = UrlFetchApp.fetch(url);
htmlCode = resp.getContentText();
serverCode = resp.getResponseCode();
if (serverCode == "404") {
entity.getAdGroup().pause();
};
} catch(e) {
Logger.log('There was an issue checking:'+url+', Skipping.');
entity.getAdGroup().pause();
continue;
}
var did_pause = false;
for(var x in OUT_OF_STOCK_TEXTS) {
if(htmlCode.indexOf(OUT_OF_STOCK_TEXTS[x]) >= 0) {
alreadyCheckedUrls[url] = 'out of stock';
entity.getAdGroup().pause();
did_pause = true;
break;
}
}
if(!did_pause) {
alreadyCheckedUrls[url] = 'in stock';
entity.getAdGroup().enable();
}
}
Logger.log('Url: '+url+' is '+alreadyCheckedUrls[url]);
}
}
}

function cleanUrl(url) {
if(WRAPPED_URLS) {
url = url.substr(url.lastIndexOf('http'));
if(decodeURIComponent(url) !== url) {
url = decodeURIComponent(url);
}
}
if(STRIP_QUERY_STRING) {
if(url.indexOf('?')>=0) {
url = url.split('?')[0];
}
}
if(url.indexOf('{') >= 0) {
//Let's remove the value track parameters
url = url.replace(/\{[0-9a-zA-Z]+\}/g,'');
}
return url;
}

function buildSelector() {
var selector = (URL_LEVEL === 'Ad') ? AdWordsApp.ads() : AdWordsApp.keywords();
selector = selector.withCondition('CampaignStatus != DELETED').withCondition('AdGroupStatus != DELETED');
if(ONLY_ACTIVE) {
selector = selector.withCondition('CampaignStatus = ENABLED');
if(URL_LEVEL !== 'Ad') {
selector = selector.withCondition('AdGroupStatus = ENABLED');
}
}
if(CAMPAIGN_LABEL) {
if(AdWordsApp.labels().withCondition("Name = '"+CAMPAIGN_LABEL+"'").get().hasNext()) {
var label = AdWordsApp.labels().withCondition("Name = '"+CAMPAIGN_LABEL+"'").get().next();
var campIter = label.campaigns().get();
var campaignNames = [];
while(campIter.hasNext()) {
campaignNames.push(campIter.next().getName());
}
selector = selector.withCondition("CampaignName IN ['"+campaignNames.join("','")+"']");
} else {
Logger.log('WARNING: Campaign label does not exist: '+CAMPAIGN_LABEL);
}
}
return selector;
}

Создание более 100 одинаковых скриптов для 100 кампаний

Ведущий участник

почитать про сервисы? или скрипты?
При таком кол-ве кампаний - надо же как то еще добавлять новые товары/группы товаров. Данный скрипт не решает эту задачу

C уважением,
Павел

Создание более 100 одинаковых скриптов для 100 кампаний

Аспирант ✭

В 100 кампаниях всего 200 групп? Или в каждой по 200 групп?