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

[Nowy skrypt] Sprawdza ilość odrzuconych produktów w Merchant Center

[ Edytowane ]
Profesjonalista ✭

Cześć,

 

Podrzucam nowy skrypt.

 

Co robi?

Sprawdza czy liczba odrzuconych produktów w Merchant Center została przekroczona.

Jeśli tak to wysyła email z listą odrzuconych produktów i typem błędu dla każdego z nich.

Czyli po prostu Alerty dla Merchant Center :-)

 

Na jakie dane patrzy?

Jak wiemy w Merchant Center są 3 typu błędów:

1. Poważne (czerwona ikona) - produkty są odrzucone

2. Ostrzeżenia (żółta ikona) - produkty się wyświetlają, ale mogą zostać odrzucone

3. Informacyjne (niebieska ikona) - są elementy, które możesz zoptymalizować, ale nie musisz.

 

Poniższy skrypt liczy tylko Poważne błędy czyli produkty, które są w tym momencie odrzucone.

 

Jak często uruchamiać?

U siebie dałem co godzinę, ale raz dziennie też wystarczy.

 

Konfiguracja:

1. Wstaw email, na który chcesz otrzymywać powiadomienia 

2. Wstaw Merchant Id number (lewy górny róg po zalogowaniu).

3. Wstaw maksymalną liczbę błędów jaką jesteś w stanie zaakceptować

 

U mnie średnia liczba błędów waha się w okolicy 100 odrzuconych produktów na konto.

Póki co u siebie dałem 150. To już zapewne będzie indywidualna kwestia.

 

Jeśli pojawią się jakieś pytania lub problemy to chętnie pomogę.

 

Pozdrawiam,

Krzysiek

 

Autoryzacja skryptu:

Skrypt ten korzysta z Content API for Shopping i niestety trzeba wykonać kilka dodatkowych kroków w trakcie autoryzacji.

1. Dodaj zaawansowane API: Content API
2. Autoryzuj Skrypt
3. Uruchom skrypt
4. Ponownie Autoryzuj Skrypt
5. Pojawi się taki błąd (to dobrze): Project XXX (tu jakiś numer) is not found and cannot be used for API calls.
6. Będzie tam podany URL gdzie musimy wejść aby dokończyć autoryzację. 
7. Przekopiuj ten URL do nowego okna.
8. Kliknij w Library po lewej i odszukaj Content API for Shopping. 9. Włącz Content API for Shopping. Tutaj dodaj dodatkowa instrukcja w razie problemów: https://developers.google.com/adwords/scripts/docs/features/advanced-apis#enabling_advanced_apis

 

Skrypt:

//Konfiguracja wymagana
var emails = ['TUTAJ WSTAW EMAIL'];
var merchantId = 'TUTAJ WSTAW MERCHANT ID'; 
var howManyErrors = 'TUTAJ WSTAW DOPUSZCZALNĄ LICZBĘ BLĘDÓW';
//Koniec konfiguracji


var badItems = [];
var errorsCount = 0;


function main() {
  isEmailOk(emails);
  isMerchantIdOk(merchantId);
  isErrorNumberOk(howManyErrors);
   if (isShoppingActive()) {  
  countCriticalItems();
     Logger.log('Całkowita liczba odrzuconych produktów: ' + errorsCount);
     if (errorsCount > howManyErrors) {
       sendEmails();
       Logger.log(badItems.join("\n"));
     }
  } else {
    Logger.log("Nie masz aktywnych kampanii zakupowych.")
  }
}


function countCriticalItems() {
  var pageToken;
  var pageNum = 1;
  var maxResults = 250;

   do {
    var products = ShoppingContent.Productstatuses.list(merchantId, {
      pageToken: pageToken,
      maxResults: maxResults
    });

    if (products.resources) {
      for (var i = 0; i < products.resources.length; i++) {
        if (products.resources[i].itemLevelIssues !== undefined && products.resources[i].dataQualityIssues[0].severity === 'critical') {
      var x = products.resources[i].itemLevelIssues
      var titleOfProduct = products.resources[i].title
          errorsCount++
          badItems.push(titleOfProduct + " " + "Został odrzucony. Kod błędu: "  + x[0].code);
     }
      
     }
    }
    pageToken = products.nextPageToken;
    pageNum++;
  } while (pageToken);
} 

function sendEmails(){
  MailApp.sendEmail(emails.join(','),
                    "Limit odrzuconych produktów został przekroczony.",
                    'Cześć, \n\nW Marchant Center ' + merchantId + ' masz obecnie: ' + errorsCount + ' odrzuconych produktów.  \n\n' + 'Lista błędów: ' +
                      '\n\n' + badItems.join("\n"));
  }

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

function isEmailOk(email) {
  if (email && email[0] === 'TUTAJ WSTAW EMAIL') {
    throw new Error('Aby uruchomic skrypt podaj swoj adres email!');
  }
}
function isMerchantIdOk(mId) {
  if (mId === 'TUTAJ WSTAW MERCHANT ID') {
    throw new Error('Aby uruchomic skrypt podaj Merchant Center ID!');
  }
}
function isErrorNumberOk(errN) {
  if (errN === 'TUTAJ WSTAW DOPUSZCZALNĄ LICZBĘ BLĘDÓW') {
    throw new Error('Aby uruchomic skrypt podaj dopuszczalną liczbe błędów!');
  }
}

 

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