GSHEET : Extraire les informations d'une ligne ET passer à la suivante

Nous sommes une petite épicerie zéro déchet en ligne et depuis peu, notre woo commerce est lié avec zoho. Par un zoho flow, nous fonctionnons encore par google sheet pour certains éléments.

Or, ce que m'envoie woocommerce(non modifiable) ne correspond pas tout à fait à ce que je souhaite :

Pour une commande d'un client, je travaille généralement selon la logique : 1 produit =1 1 ligne

Mais wooc m'envoie 1 commande (donc plusieurs produit) = 1 ligne.

Il faudrait que je fasse un onglet de traduction pour pouvoir envoyer nos commandes à nos fournisseurs.

En fonction de l'onglet wooc colonne M, j'aimerais lui dire : créer une ligne pour chaque item en séparant :

- sku

- quantity

- prix

- total taxe

- price

Je pense pouvoir y arriver à extraire d'une ligne ces informations, mais ma question est : mais ensuite !!!

En fait, il faudrait dire : va chercher dans l'onglet woo c, extraie moi ces informations selon le numéro du bon de commande.

Une fois que toutes les informations sont extraites, passe à la ligne suivante.

Auriez-vous une suggestion ?

https://docs.google.com/spreadsheets/d/1EodKqC0WULat9EmiTo_A78vzxZM_dNZooMhtBYm7cSc/edit?usp=sharing

-----

Ex d'une ligne :

[{"parent_name":"Riz basmati blanc | Biologique","image":{"src":"

","id":1356},"quantity":1,"tax_class":"taux-zero","taxes":[{"total":"0","subtotal":"0","id":19}],"total_tax":"0.00","total":"10.39","variation_id":1981,"subtotal":"10.39","price":10.39,"product_id":1354,"name":"Riz basmati blanc | Biologique - 1.3 kg","meta_data":[{"display_value":"1.3 kg","display_key":"Poids","id":2056998,"value":"1-3-kg","key":"pa_poids"},{"display_value":{"502":{"count":1,"id":502,"title":"Bocal géant 1,5L","slug":"bocal-geant-15l"}},"display_key":"consignes","id":2056999,"value":{"502":{"count":1,"id":502,"title":"Bocal géant 1,5L","slug":"bocal-geant-15l"}},"key":"consignes"},{"display_value":"10","display_key":"trash_weight","id":2057000,"value":"10","key":"trash_weight"},{"display_value":"1","display_key":"_reduced_stock","id":2057115,"value":"1","key":"_reduced_stock"}],"id":235329,"subtotal_tax":"0.00","sku":"1170000P484"},{"parent_name":"Riz arborio blanc | Biologique","image":{"src":"

","id":1280},"quantity":1,"tax_class":"taux-zero","taxes":[{"total":"0","subtotal":"0","id":19}],"total_tax":"0.00","total":"5.99","variation_id":1279,"subtotal":"5.99","price":5.99,"product_id":1278,"name":"Riz arborio blanc | Biologique - 575 gr","meta_data":[{"display_value":"575 gr","display_key":"Poids","id":2057010,"value":"575-gr","key":"pa_poids"},{"display_value":{"343":{"count":1,"id":343,"title":"Grand bocal 750ml","slug":"grand-bocal-750ml"}},"display_key":"consignes","id":2057011,"value":{"343":{"count":1,"id":343,"title":"Grand bocal 750ml","slug":"grand-bocal-750ml"}},"key":"consignes"},{"display_value":"10","display_key":"trash_weight","id":2057012,"value":"10","key":"trash_weight"},{"display_value":"1","display_key":"_reduced_stock","id":2057116,"value":"1","key":"_reduced_stock"}],"id":235330,"subtotal_tax":"0.00","sku":"1170000P147"},{"parent_name":null,"image":{"src":"

","id":"226698"},"quantity":1,"tax_class":"taux-zero","taxes":[{"total":"0","subtotal":"0","id":19}],"total_tax":"0.00","total":"2.49","variation_id":0,"subtotal":"2.49","price":2.49,"product_id":3328,"name":"Poires Bartlett biologiques, Californie (lot de 3)","meta_data":[{"display_value":{"342":{"count":1,"id":342,"title":"Filet à légumes","slug":"filet-a-legumes"}},"display_key":"consignes","id":2057022,"value":{"342":{"count":1,"id":342,"title":"Filet à légumes","slug":"filet-a-legumes"}},"key":"consignes"},{"display_value":"33","display_key":"trash_weight","id":2057023,"value":"33","key":"trash_weight"},{"display_value":"1","display_key":"_reduced_stock","id":2057117,"value":"1","key":"_reduced_stock"}],"id":235331,"subtotal_tax":"0.00","sku":"44200001885"},{"parent_name":"Bâtons de sésame salés","image":{"src":"

","id":2312},"quantity":1,"tax_class":"","taxes":[{"total":"0.2295","subtotal":"0.2295","id":11},{"total":"0.457852","subtotal":"0.457852","id":16}],"total_tax":"0.69","total":"4.59","variation_id":2311,"subtotal":"4.59","price":4.59,"product_id":2310,"name":"Bâtons de sésame salés - 250 gr","meta_data":[{"display_value":"250 gr","display_key":"Poids","id":2057033,"value":"250 gr","key":"poids"},{"display_value":{"343":{"count":1,"id":343,"title":"Grand bocal 750ml","slug":"grand-bocal-750ml"}},"display_key":"consignes","id":2057034,"value":{"343":{"count":1,"id":343,"title":"Grand bocal 750ml","slug":"grand-bocal-750ml"}},"key":"consignes"},{"display_value":"6","display_key":"trash_weight","id":2057035,"value":"6","key":"trash_weight"},{"display_value":"1","display_key":"_reduced_stock","id":2057118,"value":"1","key":"_reduced_stock"}],"id":235332,"subtotal_tax":"0.69","sku":"13600001598"},{"parent_name":null,"image":{"src":"

","id":"2725"},"quantity":1,"tax_class":"taux-zero","taxes":[{"total":"0","subtotal":"0","id":19}],"total_tax":"0.00","total":"2.49","variation_id":0,"subtotal":"2.49","price":2.49,"product_id":2724,"name":"Poivron de couleur biologique, Canada (à l'unité)","meta_data":[{"display_value":"33","display_key":"trash_weight","id":2057045,"value":"33","key":"trash_weight"},{"display_value":"1","display_key":"_reduced_stock","id":2057119,"value":"1","key":"_reduced_stock"}],"id":235333,"subtotal_tax":"0.00","sku":"44200001779"},{"parent_name":null,"image":{"src":"

","id":"245789"},"quantity":1,"tax_class":"taux-zero","taxes":[{"total":"0","subtotal":"0","id":19}],"total_tax":"0.00","total":"2.99","variation_id":0,"subtotal":"2.99","price":2.99,"product_id":3139,"name":"Oignons rouges biologiques du Québec","meta_data":[{"display_value":{"342":{"count":1,"id":342,"title":"Filet à légumes","slug":"filet-a-legumes"}},"display_key":"consignes","id":2057055,"value":{"342":{"count":1,"id":342,"title":"Filet à légumes","slug":"filet-a-legumes"}},"key":"consignes"},{"display_value":"2","display_key":"trash_weight","id":2057056,"value":"2","key":"trash_weight"},{"display_value":"1","display_key":"_reduced_stock","id":2057120,"value":"1","key":"_reduced_stock"}],"id":235334,"subtotal_tax":"0.00","sku":"41300001864"},{"parent_name":null,"image":{"src":"

","id":"8471"},"quantity":1,"tax_class":"taux-zero","taxes":[{"total":"0","subtotal":"0","id":19}],"total_tax":"0.00","total":"4.29","variation_id":0,"subtotal":"4.29","price":4.29,"product_id":2944,"name":"Brocoli biologique, États-Unis","meta_data":[{"display_value":"33","display_key":"trash_weight","id":2057066,"value":"33","key":"trash_weight"},{"display_value":"1","display_key":"_reduced_stock","id":2057121,"value":"1","key":"_reduced_stock"}],"id":235335,"subtotal_tax":"0.00","sku":"44200001844"}]

Bonjour,

Vous pourriez, dans un 1er onglet avoir votre import brut.

Dans un 2nd onglet, une traduction "lisible" à l'aide de =REGEXTRACT par exemple

Dans un 3eme onglet votre tableau de bord, avec des filtres date, cases à cocher, etc...

Oui, avec cette formule : =ARRAYFORMULA(IFERROR(VALUE(REGEXEXTRACT('Wooc'!M2:M, """sku"":""(\d+)"""))))

Toutefois je rencontre des problèmes pour l'utiliser : cela me sort juste le premier sku de la commande numero 1 mais pas les autres sku.

Je cherche à avoir :

commande 1 - sku

commande 1 - sku

... jusqu'à a voir sorti tous les sku.

Puis commande 2 - sku

commande sku ....

As-tu une idée comment faire ?

Voici d'autres formules testées :

=TRANSPOSE(SPLIT(JOIN(","; ARRAYFORMULA(SI(wooc!N2:N<>""; REGEXEXTRACT(wooc!M2:M; """sku"":""(\d+)"""); ""))); ","))

Les données semblent en Json et cela semble tout un défi de travailler avec sur google sheet.

J'arrive à avoir un sku (le premier) de chaque commande mais c'est tout ...

Cette extraction ressemble à du JSON, je vois 2 possibilité :

- compliqué à mettre en place + maintenir mais propre : utiliser Google Apps Script pour traduire le texte.

- moins propre, utiliser des formules :

dans un premier temps, séparer les blocs produits (à l'aide de split ?)

puis regextract (ex : =REGEXEXTRACT(A1, """name"":""([^""]+)""") )

Bonjour Lauren,

Pour extraire tous les "sku" d'une commande, tu peux utiliser ça :

=query(flatten(SIERREUR(arrayformula(REGEXEXTRACT(split(M2;"sku";0);"[0-9A-Z]+"))));"select * where Col1 is not null offset 1")

Cordialement,

Fil.

Merci ! Cela fonctionne en effet pour le premier sku mais pas les autres. Je suis passée par un autre moyen en google apps scripts et ça fonctionne, ne trouvant aucune fonction gsheet me permettant d'extraire un code sku en faisant une ligne à chaque fois. Cela m'avait donné sinon une ligne = une commande avec pleins de sku dans la meme ligne, il fallait repasser dessus, j'étais rendue à plusieurs onglets de traduction avant d'avoir mon résultat. J'ai potassé pas mal de test, eu beaucoup de mal à faire fonctionner les split dans regextract - surtout que j'avais pas mal d'autres extractions à faire dans chacune des colonnes - et ma conclusion est la meme que la tienne. Je te remercie grandement pour ton temps, c'est très gentil de nous avoir aidé à avancer sur ce dossier. ça reste plus propre dans google app script, qui me faisait très peur à date (je l'avais testé pour imprimer automatiquement et je ne trouve pas le fonctionnement, je pense que c'est l'imprimante qui complique), etça fonctionne super bien. C'est vraiment très apprécié d'avoir pris le temps de nous aiguiller. C'est fou comme juste le fait d'avoir une réponse et des échanges sur ce problème le font remonter dans ma liste de priorité et je suis vraiment heureuse d'avoir trouvé une solution. Je te souhaite une excellente journée

Bonjour Lauren,

C'est surprenant ce que tu dis, car pour moi ça fonctionne pour tous les "SKU" !

Voir onglet "SKU" :

https://docs.google.com/spreadsheets/d/1P5tmaJC2FixvqS8AptmUlo6ythPn5Gg8fJsc_SIDF94/edit?usp=sharing

En "SKU" cellule B2 :

=SIERREUR(byrow(wooc!M2:M;lambda(n;transpose(query(flatten(SIERREUR(arrayformula(REGEXEXTRACT(split(n;"sku";0);"[0-9A-Z]+"))));"select * where Col1 is not null offset 1")))))

Rechercher des sujets similaires à "gsheet extraire informations ligne passer suivante"