Jump to content

Problème avec le module Google Base lors de l'importation avec le Google Merchant Center


Recommended Posts

Souhaitant intégrer les produits de mon site : jeux vidéos discount au tout nouveau Google Shoping, je décide d'installer le module Google Base, afin de générer un export Xml compatible avec le Google Merchant Center.

Ce dernier importe mes 208 fiches produits et me dit dans le tableau de bord générale : "Vos données sont correctes", youhou, c'est le mimi, c'est le raracle. Et pourtant, je vois un petit chiffre concernant mes fiches produits dans la colonne "Etat" : 0/208. Je clique dessus et constate qu'il y des erreurs dans "l'offre":

Attribut obligatoire manquant : n:id (208 erreurs)

Assurez-vous que votre fichier de données contient tous les attributs obligatoires.
Exemples : Exemples :
Numéro d'offre N° de ligne
7 94
113 1 578
128 1 788
148 2 068
153 2 138

Attribut obligatoire manquant : n:condition (208 erreurs)

Attribut obligatoire manquant : n:price (208 erreurs)

Attribut obligatoire manquant : n:title (208 erreurs)
(pour plus de détails, voir la photo ci joint.)

Quelqu'un pourrait m'éclairer pour faire disparaitre ces erreurs et que je puisse avoir la chance d'intégrer ce nouveau comparateur ?

Me fichier ce trouve ici www.jeux-videos-discount.com/fr_googlebase.xml
Merci par avance

31908_EyT1LPqsi1eXLTZoyDJk_t

Link to comment
Share on other sites

J'ai la même erreur que toi. Pourtant, j'ai repris le module, corrigé 2-3 trucs.

Avec xmlns:g="http://base.google.com/ns/1.0"
et des ...

Il arrive à vouloir te chercher un put***n de n:id.
Et les autres aussi n:price, n:condition, et même un n:title. Alors lui, je sias pas d'où il sort...

Je lance un import en essayant avec le n de partout, on verra bien dans une demi heure quand il se sera décidé à traiter le fichier.

Mais pourtant, on pourrait mettre xmlns:babar="http://base.google.com/ns/1.0" et utiliser babar:id ...

On verra bien. Pour l'instant on est 2 dans le monde à avoir cette co*ille.

Link to comment
Share on other sites

Donc on est 3.

Je viens de lire tout ça. Ça bidouille, mais c'était surtout pour essayer de corriger des erreurs UTF8 ou avoir la description longue.

Je vais essayer sans le guid et sans le poids comme il y en a un chez qui ça a marché sans ça.
Seulement, faire les essais, c'est long. Faut attendre l'analyse...

Link to comment
Share on other sites

Sans le guid, ça n'a rien changé.
J'essaye sans le g:weight demain...

J'ai bien peur que ce soit un problème côté Google. Pq le XML généré est bon. Je l'ai validé dans plusieurs validateurs en ligne, ça passe (enfin, avec ma version de google base, j'ai entièrement corrigé les pb utf8).

Mes changements :

private function _postProcess()

   {

       $description = Configuration::get('googlebase_description');

       $domain = Configuration::get('googlebase_domain');

       $psdir = Configuration::get('googlebase_psdir');

       $items_added = 0;



       $link = new Link();

       $Products = Product::getProducts(intval($this->_cookie->id_lang), 0, NULL, 'id_product', 'ASC');



       if($Products)

       {



           $xml = '<?xml version="1.0" encoding="UTF-8" ?>'."\n";

           $xml .= ''."\n\n";

                   $xml .= ''."\n";

               $xml .= '<title>Google Base feed for '.$domain.'</title>'."\n";

               $xml .= ''.htmlspecialchars($description, ENT_NOQUOTES, 'UTF-8').''."\n";

               $xml .= '<link>http://'.$domain.'/</link>'."\n";

           $xml .= "\n";



           $this->_addToFeed($xml);            



           $items = '';

           foreach ($Products AS $Product)

           {

             if ($Product['active']) {

               $image = Image::getImages(intval($this->_cookie->id_lang), $Product['id_product']);

               $expire_date = date('Y-m-d', strtotime("+30 days"));



               $cat_to_url = Category::getLinkRewrite($Product['id_category_default'], intval(Configuration::get('PS_LANG_DEFAULT')));

               $product_link = $link->getProductLink($Product['id_product'], $Product['link_rewrite'], $cat_to_url);



               // Make 1.1 result look like 1.2

               if (strpos( $product_link, 'http://' ) === false )        

                   $product_link = 'http://'.$_SERVER['HTTP_HOST'].$product_link;

               // remove the start to get a URI relative to __PS_BASE_URI__

               $product_link = str_replace('http://'.$_SERVER['HTTP_HOST'].__PS_BASE_URI__,'',$product_link);                                 

               // Then build a full url according to the settings

               $product_link = 'http://'.$domain.$psdir.$product_link;



               $id = 'pc'.strtolower(Language::getIsoById($this->_cookie->id_lang)).'-'.$Product['id_product'];



               $xml = ''."\n";



               $xml .= '<title>'.htmlspecialchars($Product['name'], ENT_NOQUOTES, 'UTF-8').'</title>'."\n";

               $xml .= '<link>'.$product_link.'</link>'."\n";

               $xml .= '<![CDATA['.html_entity_decode(strip_tags($Product['description_short']), ENT_QUOTES, 'UTF-8').']]>'."\n";

               //$xml .= ''.$id.''."\n";



               $xml .= ''.$id.''."\n";

               $xml .= 'new'."\n";

               $xml .= ''.Product::getPriceStatic(intval($Product['id_product']), true, null, 2).''."\n";



               $xml .= ''.$this->getPath($Product['id_category_default']).''."\n";

               $xml .= ''.htmlspecialchars($Product['manufacturer_name'], ENT_NOQUOTES, 'UTF-8').''."\n";

                       $xml .= ''.$expire_date.''."\n";

               if (isset($image[0]))

                   $xml .= 'http://'.$domain.$psdir.'img/p/'.$image[0]['id_product'].'-'.$image[0]['id_image'].'-large.jpg'."\n";

               if ($Product['weight']>0)

                   $xml .= ''.$Product['weight'].' '.Configuration::get('PS_WEIGHT_UNIT').''."\n";



               $xml .= ''."\n\n";



               $items .= $xml;

               $items_added++;



               if ($items_added > 100) {

                   // 0.6.3.1: Flush the buffer out to the file, just in case it gets too big

                   $this->_addToFeed($items);

                   $items_added = 0;

                   $items = '';

               }

             }

           }

           $this->_addToFeed( "$items\n" );

       }



       $res = file_exists($this->winFixFilename(Configuration::get('googlebase_filepath')));

       $this->_html .= '';

       $this->_html .= $res ? $this->l('Feed file successfully generated') : $this->l('Error while creating feed file');

       $this->_html .= '';

   }

Link to comment
Share on other sites

Vous allez rire...

J'ai configurer le flux (dans google merchant) avec langue des attributs en français.
Du coup, il me disait qu'il manquait prix et état.

J'ai remplacé les par et par (avec l'accent, oui oui) (et le new en neuf dedans).

Et ça a marché. Il a bien tout importé. En prenant aussi les balises qui étaient restées en anglais (title, g:brand ...).

On peut dire que Google a du mal avec l'XML...

Link to comment
Share on other sites

Moi j'ai fait mon petit module également en partant sur la base du module "gsitemap", et le problème c'est qu'avec la fonction "addChild", quand on ajoute le dernier paramètre (source, ici "g"), pour obtenir ce genre de balise : , il ajoute également un attribut "xmlns" à la balise, du coup Google ne le détecte pas...

Si je prends mon fichier généré et que je supprime tous ces attributs puis que je l'upload manuellement, il passe...

Quelqu'un sait comment éviter l'ajout de cet attribut par la fonction "addChild" ?

Link to comment
Share on other sites

Dans les "Paramètres du Fichiers de données", il faut configurer "Langue de l'attribut" à "Anglais"
Puis, j'ai réussi a faire fonctionné le module en modifiant la fonction _postProcess() comme suit.

   private function _postProcess()
   {
       $description = Configuration::get('googlebase_description');
       $domain = Configuration::get('googlebase_domain');
       $psdir = Configuration::get('googlebase_psdir');
       $items_added = 0;

       $link = new Link();
       $Products = Product::getProducts(intval($this->_cookie->id_lang), 0, NULL, 'id_product', 'ASC');

       if($Products)
       {
           $this->_addToFeed("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n\n"
           . "\n\n"
           . "\n"
           . "<title>Google Base feed for ".$domain."</title>\n"
           . "".htmlspecialchars($description, ENT_NOQUOTES, 'UTF-8')."\n"
           . "<link>http://".$domain."/</link>\n"
           . "\n");


           $items = "";
           foreach ($Products AS $Product)
           {
             if ($Product['active']) {
               $image = Image::getImages(intval($this->_cookie->id_lang), $Product['id_product']);
               $expire_date = date('Y-m-d', strtotime("+30 days"));
               $product_link = $link->getProductLink($Product['id_product'], $Product['link_rewrite']);
               // Make 1.1 result look like 1.2
               if (strpos( $product_link, 'http://' ) === false )        
                   $product_link = 'http://'.$_SERVER['HTTP_HOST'].$product_link;
               // remove the start to get a URI relative to __PS_BASE_URI__
               $product_link = str_replace('http://'.$_SERVER['HTTP_HOST'].__PS_BASE_URI__,'',$product_link);                                 
               // Then build a full url according to the settings
               $product_link = 'http://'.$domain.$psdir.$product_link; 

               $items .= "\n"
               . ""."pc".strtolower(Language::getIsoById($this->_cookie->id_lang))."-".$Product['id_product']."\n"
               . "<title>".$Product['name']."</title>\n"
               . "".$Product['manufacturer_name']."\n" 
               . "new\n"
               . "<![CDATA[".strip_tags($Product['description_short'])."]]>\n"
       . "$expire_date\n";
               //. ""."pc".strtolower(Language::getIsoById($this->_cookie->id_lang))."-".$Product['id_product']."\n";
               if (isset($image[0]))
                   $items .= "".'http://'.$domain.$psdir.'img/p/'.$image[0]['id_product'].'-'.$image[0]['id_image'].'-large.jpg'."\n";
               $items .= "<link>".$product_link."</link>\n"
               . "".Product::getPriceStatic(intval($Product['id_product']))."\n"
               . "".html_entity_decode($this->getPath($Product['id_category_default']))."\n";
               if ($Product['weight']>0)
                   $items .= "".$Product['weight']." ".Configuration::get('PS_WEIGHT_UNIT')."\n";
               $items .= "\n\n";
               $items_added++;
               if ($items_added>100) {
                   // 0.6.3.1: Flush the buffer out to the file, just in case it gets too big
                   $this->_addToFeed($items);
                   $items_added = 0;
                   $items = '';
               }
             }
           }
           $this->_addToFeed( "$items\n\n" );
       }

       $res = file_exists($this->winFixFilename(Configuration::get('googlebase_filepath')));
       $this->_html .= '';
       $this->_html .= $res ? $this->l('Feed file successfully generated') : $this->l('Error while creating feed file');
       $this->_html .= '';
   }

Link to comment
Share on other sites

Salut Julien
J'ai effectué tes modifs mais cela ne fonctionne toujours pas
J'ai essayé avec langue française et anglaise mais l'une comme l'autre me retournent une erreur
Version googlebase 0_6_3_1
Depuis le temps que j'attends que Google nous offre une langue française à son Merchant Center je suis un peu déçue ;)
Cordialement

Link to comment
Share on other sites

Ben dis donc c'est une réponse rapide ça :)
Voici le lien
http://www.jeux-jouets-doudous.fr/fr_googlebase.xml
utf8_general_ci : oui

Voici le message que j'obtiens

État du fichier pour fr_googlebase.xml
0 offres insérées sur 1 - Traité le 25 oct. 2010 23:57 PDT
Destinations : Product Ads, Google Shopping

Taille totale du fichier : 573.04 Ko
Format de fichier détecté : XML
Messages au niveau du fichier
Erreur : Erreur de format XML - Erreur
Une erreur s'est produite lors du traitement de votre fichier de données.
En savoir plus
Exemples : Exemples :

N° de ligne N° de colonne
20 26

Cordialement

Link to comment
Share on other sites

Ton xml n'est pas valide, cf W3C Validator
Cela en raison du et commercial dans la catégorie "Doudous & Peluches"
Essaie de renommer ta catégorie "Doudous & Peluches" en "Doudous et Peluches" et regénére le fichier xml.
Ensuite repasse ton fichier xml dans le validateur W3C avant de le re-soumettre à google.
Si ton fichier est OK, tu devrais avoir un seul warning sur le validateteur W3C mais plus d'erreur.

Link to comment
Share on other sites

Bonjour
Oui mon xml est valide merci à toi
Cependant des erreurs sont encore reconnues par Google

Erreurs dans l'offre - 2034 offre(s) avec des erreurs 2034 offre(s) concernée(s)
1017
Attribut obligatoire manquant : prix (1017 erreurs)
Assurez-vous que votre fichier de données contient tous les attributs obligatoires.
Exemples : Exemples :

Numéro d'offre N° de ligne
2 24
29 381
39 511
51 667
54 706

1017
Attribut obligatoire manquant : état (1017 erreurs)
Assurez-vous que votre fichier de données contient tous les attributs obligatoires.
Exemples : Exemples :

Numéro d'offre N° de ligne
2 24
29 381
39 511
51 667
54 706

Link to comment
Share on other sites

Ca c'est du haut vol
1017 objets insérés avec succès et sans aucune erreur
En faite oui c'était bien ça c'est le mot Neuf qui faisait planter

Donc pour mettre à jour mon fichier je dois le générer dans l'admin Presta
Le récupérer et demander de remplacer automatiquement neuf par new (avec éditeur xml)
Ca fait une petite manip mais je jeux en vaut la chandelle je pense

Par contre chose que je ne comprends pas c'est que je ne vends que de l'occasion quasiement
Neuf est mis d'office?
Peut on le modifier dans Presta?

En tout cas je te dois une fière chandelle et si je peux faire qqchose pour toi n'hésite pas

Avec toute ma reconnaissance
Très cordialement

Link to comment
Share on other sites

Extrait de http://www.google.com/support/merchants/bin/answer.py?hl=fr&answer=188494


état [condition]

Cet attribut indique l'état de votre produit. Trois valeurs sont acceptées : "neuf", "occasion" et "reconditionné".
Format Seules trois valeurs sont possibles :

* neuf
* occasion
* reconditionné

Format texte/délimité par des tabulations occasion
XML used
Remarque : Si vos attributs sont en anglais, les trois valeurs acceptées sont "new", "used" et "refurbished".


Dans ton cas, si occasion, il faut donc utiliser "used"

Le module prestashop googlebase, ne prend pas en compte le paramètrage de cette attribut "condition".
Tu peux modifier le fichier modules/googlebase/googlebase.php directement en remplaçant la ligne

               . "neuf\n"



par

               . "used\n"



Si vous utilisez le format XML ou l'API, vous devez utiliser les noms d'attributs en anglais (indiqués entre crochets).

Link to comment
Share on other sites

L'import a fonctionné pour moi et les produits sont en attente d'évaluation.
Par contre, je trouve la situation pas très claire.
Sur le site google merchant, on peux paramètrer les attributs en FR ou en EN.
Mais google indique qu'en XML il faut utiliser les atttributs en EN obligatoirement.
Ce qui pose le problème du neuf versus new recontré par Nightbutterfly et moi.
Obligé d'utiliser new si le flux est paramétré en EN.
Est ce que les produits vont s'afficher en Neuf ou en New sur google shopping .fr ?
D'autre part, les attributs en FR contiennent des accents (exemple: état)
Est ce que le format XML autorise des attributs xml accentué ?
J'ai l'impression que le service FR a été lancé à l'arrache et que tout n'est pas prêt

Link to comment
Share on other sites

Il y a eu quelques problèmes. Tout est corrigé depuis 2j.
Il faut mettre les attributs en anglais uniquement. C'est pour l'import au format txt qu'on peut spécifier à la première ligne les attributs en français.

Dans g:condition, il faut mettre en anglais, donc new, used ou refurbished. Je n'ai pas de soucis avec ça.

Link to comment
Share on other sites

Début des essais d'ajout : samedi.
Produits finalement ajoutés dimanche (avec une astuce maintenant inutile pour contourner les bugs qui ont été corrigés lundi).
Produits validés dans la nuit de mardi à mercredi (cette nuit donc) et visibles dans Google Shopping.

Il faut compter 2-3 jours, c'est ce qu'il revient apparemment.
Le délai devrait diminuer, car c'est le lancement, il y a beaucoup de demande d'ajout.

Link to comment
Share on other sites

Bonjour à tous,

tout d'abord merci de faire avancé le sujet comme cela, grâce à vous j'ai réussi un début d'import sur google :)

mon fichier xml (valide) et généré avec votre code modifié du module googlebas : http://i-accessoires.com/modules/googlebase/fr_googlebase.xml

J'ai bien mis anglais dans la config du fichier xml et remplacé neuf par new.

Il y a donc plus d'une centaine de produits et google m'envoie juste après l'import ceci : État du fichier de données Google Merchant Center sur "import2" : 44 offres insérées sur les 45 traitées

Je ne comprends pas pourquoi il n'en traite que si peu...

Avez-vous une idée ?

Merci d'avance

Steven.

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour,

J'ai installer le module: Google Base Feed Products v0.6.3.1

J'ai specifier dans Google Base la langue comme "anglais"

En revanche, l'import de mes produits ne fonctionne pas.

Voici le message que je reçois:

État du fichier pour googleshopping.xml
Aucune offre ajoutée - Traité le 12 nov. 2010 07:12 CET
Destinations : Product Ads, Google Shopping
Messages au niveau du fichier
Erreur : Refusé - Erreur

Votre fichier de données a été refusé, car une partie ou l'ensemble de vos offres ne respectent pas le règlement du programme.
En savoir plus

Merci pour votre aide !

Cordialement

Link to comment
Share on other sites

Le format du fichier est valide, cf http://www.futondeco.com/fr_googlebase.xml&charset;=(detect+automatically'>http://validator.w3.org/check?uri=http://www.futondeco.com/fr_googlebase.xml&charset;=(detect+automatically)&doctype=Inline&group=0

Par contre, je vois "neuf" dans neuf
Essaie avec "new" au lieu de "neuf"

De plus, il y a un espace en trop au début des champs Futons
Ajoute un trim dans le code php pour ce champ
cf http://php.net/manual/fr/function.trim.php pour l'utilisation



Bonjour Julien,

Voici mon fichier google shopping, merci pour ton aide.

http://www.futondeco.com/fr_googlebase.xml
Link to comment
Share on other sites

Le format du fichier est valide, cf http://www.futondeco.com/fr_googlebase.xml&charset;=(detect+automatically'>http://validator.w3.org/check?uri=http://www.futondeco.com/fr_googlebase.xml&charset;=(detect+automatically)&doctype=Inline&group=0

Par contre, je vois "neuf" dans neuf
Essaie avec "new" au lieu de "neuf"

De plus, il y a un espace en trop au début des champs Futons
Ajoute un trim dans le code php pour ce champ
cf http://php.net/manual/fr/function.trim.php pour l'utilisation



Bonjour Julien,

Voici mon fichier google shopping, merci pour ton aide.

http://www.futondeco.com/fr_googlebase.xml


Bonjour,

Merci, mais comment puis-je fixer ceci car le fichier est entièrement automatiquement genere ?

Merci Julien
Link to comment
Share on other sites

Remplace le fichier googlebase.php du module par celui ci http://www.prestashop.com/forums/viewreply/321818/


Bonjour,

Merci, c'est bien ce que j'ai fais remplacer le fichier php par celui propose dans ce post. En revanche, cela ne fonctionne toujours pas, j'ai ce message:


État du fichier pour googleshopping.xml
Aucune offre ajoutée - Traité le 15 nov. 2010 02:52 CET
Destinations : Product Ads, Google Shopping
Messages au niveau du fichier
Erreur : Refusé - Erreur

Votre fichier de données a été refusé, car une partie ou l'ensemble de vos offres ne respectent pas le règlement du programme.
En savoir plus

Merci pour ton aide.
Link to comment
Share on other sites

  • 4 months later...
  • 2 weeks later...
  • 1 month later...
  • 4 months later...

Bonjour à tous,

 

Après avoir générer un fichier xml avec Google Base par le biais de BO du site :

 

http://www.starparapharmacie.fr

 

Je me connecte à Google Shopping et je transfère le fichier manuellement "Importation Manuelle".

 

Mais dans la barre d'état il est marqué "Traitement en cours" depuis plusieurs minutes maintenant.

 

Il y a environ 400 Références, est ce normal?

 

Merci.

 

Autres soucis quand je vais sur : http://validator.w3.org/ et que je rentre le lien de mon fichier xml :

 

http://www.starparap..._googlebase.xml

 

le site W3C m'indique : "404 Not Found"

 

Pourtant le fichier est bien situé au bon endroit, le chemin est bon et j'ai mis tous les droits : CHMOD 777

 

D'où cela peut-il bien venir?

 

Merci par avance de votre aide.

Edited by Ludodev (see edit history)
Link to comment
Share on other sites

  • 8 months later...
  • 6 months later...

Bonjour à tous, voila j'essaie d'exporter un fichier pour google merchant center avec le module googlebase mais j'ai une erreur lors du update feed file!! Voici cette erreur :

 

Le site Web a rencontré une erreur lors de l'extraction de http://armagnac-du-gers.fr/admin1/index.php?controller=adminmodules&configure=googlebase&token=0bd9f0af1571a14df93868684172b913&tab_module=Tools&module_name=googlebase. Cela peut être dû à une opération de maintenance ou à une configuration incorrecte.

 

serait ce un problème de droits??

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...