AdWords to teraz Google Ads. Nowa nazwa oddaje pełny zakres usług reklamowych, jakie oferujemy m.in. w wyszukiwarce, sieci reklamowej i YouTube.. Więcej informacji

Obecnie 63 forumowiczów jest online
Obecnie 63 forumowiczów jest online
Dla pytań związanych z funkcjami remarketingu, strategii stawek, Edytor AdWords i skryptów Google Ads.
Poprowadź mnie
star_border
Odpowiedz

[Nowy Skrpyt] Sprawdza stawki na słowach kluczowych i produktach

[ Edytowane ]
Wszechwiedzący ✭

Cześć,

 

Napisałem prosty skrypt, który sprwadza czy mamy słowa kluczuwe / produkty, które mają stawki poza ustalonymi granicami.

 

Inspiracja:
W zeszyłm tygodniu przez przypadek ustawiłem stawkę 80 zamiast 0.8
Na szczeście w miarę szybko wyłapałem sprawę ;-)

 

Ustawienia:

1) Email
2) minBid - twoja minimalna stawka
3) maxBid - twoja maksymalna stawka

Jeśli zostaną one przekroczone to dostaniesz maila.

 

Częstotliwość uruchamiania:
Sugeruję raz dziennie przed wyjściem z pracy np. o 16stej (może być też co godzinę).

 

W razie pytan lub sugestii chetnie pomogę.

 

 

//Konfiguracja wymagana:
var emails = ['TUTAJ WSTAW EMAIL'];
var minBid = 0.5;
var maxBid = 7;
//Koniec konfiguracji



var badKeywords = [];
var badItems = [];

function main() {
isEmailOk(emails);

if (isSearchActive()) {
findBadKeywords();
} else {
Logger.log("Nie było aktywnych kampanii zakupowych w ostatnich 14 dniach")
}

if (isShoppingActive()) {
findBadItems();
} else {
Logger.log("Nie było aktywnych kampanii zakupowych w ostatnich 14 dniach")
}

if (isShoppingActive() || isSearchActive()) {
Logger.log(badKeywords);
Logger.log(badItems);
sendEmails();
}

}

function findBadKeywords() {
var keywords = AdWordsApp
.keywords()
.forDateRange('TODAY')
.withCondition('Impressions > 0')
.get();
while(keywords.hasNext()) {
var keyword = keywords.next();
var maxCpc = keyword.bidding().getCpc();
var kwName = keyword.getText();
var kwCampaignName = keyword.getCampaign();
var kwAdgroupName = keyword.getAdGroup();

if (maxCpc < minBid) {
badKeywords.push(kwCampaignName.getName() + "\\" + kwAdgroupName.getName() + "\\" + kwName + ' ma CPC poniżej ustalonego minimum: ' + maxCpc);
}
if (maxCpc > maxBid) {
badKeywords.push(kwCampaignName.getName() + "\\" + kwAdgroupName.getName() + "\\" + kwName + ' ma CPC powyżej ustalonego maximum: ' + maxCpc);
}
}
}

function findBadItems(){
var productGroups = AdWordsApp
.productGroups()
.forDateRange('TODAY')
.withCondition('Impressions > 0')
.get();
while (productGroups.hasNext()) {
var productGroup = productGroups.next();
var productItemId = productGroup.asItemId();
var itemId = productItemId.getValue();
var maxCpc = productItemId.getMaxCpc();
var itemCampaignName = productGroup.getCampaign();
var itemAdgroupName = productGroup.getAdGroup();
if (itemId && maxCpc) {
if (maxCpc < minBid) {
badItems.push(itemCampaignName.getName() + "\\" + itemAdgroupName.getName() + "\\" + itemId + " ma CPC poniżej ustalonego minimum: " + maxCpc);
}
if (maxCpc > maxBid) {
badItems.push(itemCampaignName.getName() + "\\" + itemAdgroupName.getName() + "\\" + itemId + ' ma CPC powyżej ustalonego maksimum: ' + maxCpc);
}
}
}
}

function sendEmails(){
if (badKeywords[0] && badItems[0]) {
MailApp.sendEmail(emails.join(','),
'Masz stawki, które nie spełniają twoich norm.',
'Cześć, \n\nPoniższe słowa kluczwe mają stawki, które wymagają uwagi: \n\n' + badKeywords.join("\n") +
'\n\nOraz te produkty: \n\n' + badItems.join("\n"));
return;
} else if (badItems[0]) {
MailApp.sendEmail(emails.join(','),
'Masz stawki, które nie spełniają twoich norm.',
'Cześć, \n\nPnoniższe produkty mają stawki, które wymagają uwagi: \n\n' + badItems.join("\n"));
} else if (badKeywords[0]) {
MailApp.sendEmail(emails.join(','),
'Masz stawki, które nie spełniają twoich norm.',
'Cześć, \n\nPoniższe słowa kluczwe mają stawki, które wymagają uwagi: \n\n' + badKeywords.join("\n"));
}
}

function isEmailOk(email) {
if (email && email[0] == 'TUTAJ WSTAW EMAIL') {
throw new Error('Aby uruchomic skrypt podaj swoj adres email');
}
}

function isShoppingActive(){
var shoppingCampaigns = AdWordsApp
.shoppingCampaigns()
.withCondition("Clicks > 1")
.forDateRange('LAST_14_DAYS')
.get();
if (shoppingCampaigns.totalNumEntities() > 0) {
var theResult = true;
} else {
var theResult = false;
}
Logger.log(shoppingCampaigns.totalNumEntities() + " aktywnych kampanii zakupowych");
return theResult;
}

function isSearchActive(){
var searchCampaigns = AdWordsApp
.campaigns()
.withCondition("Clicks > 1")
.forDateRange('LAST_14_DAYS')
.get();
if (searchCampaigns.totalNumEntities() > 0) {
var theResult = true;
} else {
var theResult = false;
}
Logger.log(searchCampaigns.totalNumEntities() + " aktywnych kampanii tekstowych");
return theResult;
}

 

Czy moja odpowiedź była pomocna? Jeśli tak, oznacz ją jako „najlepszą odpowiedź”
Odpowiedź eksperta 1verified_user

[Nowy Skrpyt] Sprawdza stawki na słowach kluczowych i produktach

Wszechwiedzący ✭

Krzysiek, szacun za moc, która w Tobie drzemie (i się regularnie budzi) Emotikon: Szczęśliwy

________
Booguś

[Nowy Skrpyt] Sprawdza stawki na słowach kluczowych i produktach

Najlepszy Współtwórca

BRAWO - dzięęęękuuuuujeeeemyyyyy

Dominik Myślak

Dot.: [Nowy Skrpyt] Sprawdza stawki na słowach kluczowych i produktach

Wszechwiedzący ✭

Siemanko i nie ma sprawy!

 

Dodałem jeszcze jeden warunek do skryptu (poprawiłem pierwszy post):

if (itemId && maxCpc) 

 

To powinno zablokować sprawdzanie produktów, które nie zostały wyodrębnione w strukturze kampanii zakupowych.

Niestety skrypty nie widzą poprawnie tych produktów i sumują ich dane.

 

Jeśli macie jakieś sugestie to piszcie.

Czy moja odpowiedź była pomocna? Jeśli tak, oznacz ją jako „najlepszą odpowiedź”