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 116 forumowiczów jest online
Obecnie 116 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

1 produkt na 1 grupę reklam - ktoś chce?

[ Edytowane ]
Wszechwiedzący ✭

Cześć,

 

Na innym forum pojawiło się pytanie czy nie zrobiłbym skryptu, który utowrzy kampanie zakupową rozdzieloną na:

1 produkt na 1 jedną grupą reklam.

 

W ten sposób będzie można zobaczyć wyszukiwane hasła dla konkretnego produktu.

To by był game changer ;-)

 

Nie wiem czy ktoś jeszcze tak to widzi?

Ktoś tez by to chciał?

Wydaje mi się dało by się to zrobić.

 

Osobiście jednak nie ma szans, żebym przechodził od grupy do grupy i przeglądał wszystko osobno.

Można by się wykończyć ;-)

 

 

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

1 produkt na 1 grupę reklam - ktoś chce?

Najlepszy Współtwórca

Dlatego grupujemy produkty, bądź wykonujemy inne zabiegi pomagające w optymalizacji Emotikon: Szczęśliwy

 

Pomysł ze skryptem OK, ale przeglądanie X grup reklam może być kłopotliwe.

 

Ale, gdyby do takiej kampanii można by zaciągnąć tylko konkretne, wybrane przez nas produkty, to już zmienia postać rzeczy - tylko te najlepsze.

Dominik Myślak

1 produkt na 1 grupę reklam - ktoś chce?

Wszechwiedzący ✭

Myślę, że można by to zalatwić np. tak: wydziel te, w który Custom Label 1 = "Prosze mnie wydzielić"
:-) :-)

 

Czli mówisz Dominik, że jeśli zrobilbym takie coś to lajki by się posypały? Emotikon: Szczęśliwy

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

1 produkt na 1 grupę reklam - ktoś chce?

Najlepszy Współtwórca

Ja może bym skorzystał Emotikon: Szczęśliwy

Dominik Myślak

1 produkt na 1 grupę reklam - ktoś chce?

Wszechwiedzący ✭

Przemyślę to ;-)

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

1 produkt na 1 grupę reklam - ktoś chce?

Wszechwiedzący ✭

@Dominik Myślak,

 

Jak widzisz nazwy pojedynczych grup reklam jako item id?

 

 

 

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

1 produkt na 1 grupę reklam - ktoś chce?

Najlepszy Współtwórca

trochę kiepsko Emotikon: Szczęśliwy  dałoby się zaciągnąć title? Tylko to też rodzi pewne problemy z długością nazwy

Dominik Myślak

1 produkt na 1 grupę reklam - ktoś chce?

Magister ✭

Byłbym bardziej za rozwiązaniem o którym pisał @dominik, czyli grupowania produktów po custom label. Przy większej ilości produktów analizowanie każdej kampanii byłoby mordęgą. 

1 produkt na 1 grupę reklam - ktoś chce?

[ Edytowane ]
Wszechwiedzący ✭

Dobra to pomyśle nad title.

A może np. 70 (może być inna liczba potestuje jeszcze) znaków title + item id?

 

Będzie łatwiej wyszukjać na poziomie grupy reklam gdy będzie trzeba zerknąć na dane id.

 

Ps.

@Mariusz K, jak masz chwilę to możesz też potestować inne skrypty, które wrzuciłem.

Może cię się któryś przyda. U mnie klientom się to podoba, że dodaję dodatkowe bajery.

Jak będziesz miał pytania to pisz.

 

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

1 produkt na 1 grupę reklam - ktoś chce?

Magister ✭

Moje umiejętności nie dotarły jeszcze do obsługi skryptów ale dziękuję i pewnie gdy opanuje obszar będę korzystał Emotikon: Szczęśliwy

1 produkt na 1 grupę reklam - ktoś chce?

Wszechwiedzący ✭

Jasne, no problemo ;-)

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

Dot.: 1 produkt na 1 grupę reklam - ktoś chce?

Wszechwiedzący ✭

 

 Śmiga.

 

Instrukcja:

1. Utwórz nową kampanie zakupową bez grup reklam

2. Wrzuć skrypt

3. Włącz Content API:

https://developers.google.com/adwords/scripts/docs/features/advanced-apis

4. Ustaw skrypt:

a) Merchant ID

b) Nazwa kampanii gdzie zostana utworzone grupy reklam patrz punkt 1.

 

Skrypt utworzy osobne grupy reklam tylko dla oznaczonych produktow

c) customLabelNumber - oznacz, na ktore custom label ma patrzec

d) customLabelValue - i jakiej wartosci ma szukac

 

Czyli jesli masz 10 000 produktow i chcialbys miec 1 produkt w 1 grupie reklam dla np. telewizorow to oznacz w feedzie wszystkie telewizory w custom label 4 (lub innej) jakąś wartości np. split me

 

I ostatnie: jaką stawke mają mieć nowo utworzone produkty. Standardowo jest 1.

 

Ps. w podglądzie skrypt wyrzuca błąd - tak ma być. 

Należy go normalnie uruchomić aby zrobił robotę Emotikon: Mrugający

 

@Dominik Myślak wracaj z urlopu bo samo się nie przetestuje ;-)

@Booguś może też być chciał spróbować? oraz wysłałem ci zaproszonie na hangouts.

 

//Required Configuration:
var merchantId = 'XXXXXX'; 
var campaignName = 'XYZ test'; // Destination shopping campaign - You have to create it manually first!

var customLabelNumber = "customLabel4"; // Possible values: customLabel0, customLabel1, customLabel2, customLabel3, customLabel4 ***THIS IS CASE SENSITIVE!
var customLabelValue = "Split out"; // Only products that have this value under the custom label are going to be split in to the separate ad groups
var startingBid = 1; // What bid for created products?
//End of the configuration


var itemIdData = [];
var titleData = [];


function main() {
verifyCampaign();
verifyMerchantId();
verifyCustomLabel();
fetchTheData();
  if (titleData.length > 0) {
Logger.log("Creating Ad groups...")
createShoppingAdGroups();
  } else {
    Logger.log("There is no data that matches your requirements. Review the script configuration or update the Shopping feed!")
}
}

function createShoppingAdGroups() {
  var shoppingCampaign = AdWordsApp.shoppingCampaigns()
      .withCondition("CampaignName = '" + campaignName + "'")
      .get()
      .next();
  for (i = 0; i < titleData.length; i++) {
  var adGroupOperation = shoppingCampaign.newAdGroupBuilder()
  .withName(titleData[i] + " // " + itemIdData[i])
  .withStatus("ENABLED")
  .build();
  var shoppingAdGroup = adGroupOperation.getResult();
  shoppingAdGroup.createRootProductGroup()
  shoppingAdGroup.rootProductGroup().newChild()
      .itemIdBuilder()
      .withBid(startingBid)
      .withValue(itemIdData[i])
      .build()
 findOtherCase = shoppingAdGroup.productGroups().get()
 while (findOtherCase.hasNext()) {
 var isThisOtherCase = findOtherCase.next()
if (isThisOtherCase.isOtherCase()){
  isThisOtherCase.exclude()
}
 }
  }
}

function fetchTheData() {
  var productNumber = 0
  var pageToken;
  var pageNum = 1;
  var maxResults = 250;
   do {
    var products = ShoppingContent.Products.list(merchantId, {
      pageToken: pageToken,
      maxResults: maxResults
    });

    if (products.resources) {
      Logger.log(products.resources.length)
      for (var i = 0; i < products.resources.length; i++) { 
        if (products.resources[i][customLabelNumber] === customLabelValue && products.resources[i].destinations[0].destinationName === "DisplayAds" && products.resources[i].destinations[0].intention === "excluded") {
         titleData.push(products.resources[i].title)
         itemIdData.push(products.resources[i].offerId) 
     }
      }
    }
    pageToken = products.nextPageToken;
    pageNum++;
  } while (pageToken);
} 

function verifyCustomLabel(){
  if (customLabelNumber === "customLabel0" || customLabelNumber === "customLabel1" || customLabelNumber === "customLabel2"|| customLabelNumber === "customLabel3" || customLabelNumber === "customLabel4") {
  } else {
    throw new Error("There is a typo in the customLabelNumber configuration. Remember: this is CASE SENSITIVE!")
  }
}

function verifyMerchantId() {
  if (isNaN(merchantId)){
    throw new Error("You must enter a correct Merchand ID number to run the script!")
  }
}

function verifyCampaign() {
  var campaign = AdWordsApp.shoppingCampaigns().withCondition("Name = '"+ campaignName + "'").get();
  if (campaign.totalNumEntities() === 0) {
    throw new Error("There is no Shopping Campaign with the name you provided: " + campaignName + ". Verify the script configuration & Run the script again.")
  }
}

 

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