web-dev-qa-db-fra.com

Empêcher importXML de renverser du texte sur plusieurs colonnes

Lors de l’importation de transcription du chat par importXML, par exemple,

=IMPORTXML("http://chat.stackexchange.com/transcript/7/2015/8/13", "//div[@class='content']")

Je trouve que certains messages sont répartis sur plusieurs colonnes:

+-------------------+---------------+----------------+
| "The tag-wiki ... | google-search |  tag instead.  |
+-------------------+---------------+----------------+

Je comprends que cela se produit car "google-search" se trouve dans son propre élément HTML:

... use the <a href="//webapps.stackexchange.com/questions/tagged/google-search"><span class="ob-post-tag" style="background-color: #E2EDFA; color: #5D7A9C; border-color: #5D7A9C; border-style: solid;">google-search</span></a> tag instead. 

Mais je ne veux pas avoir plusieurs colonnes comme ça. Je veux tous les messages de chat dans la même cellule:

Le tag-wiki contient la phrase suivante: Si vous parlez de recherche, utilisez plutôt la balise google-search.

Existe-t-il un moyen d'empêcher importXML d'utiliser le texte brisé en colonnes ou de les joindre? join("", importxml(...)) génère une erreur car la plage est bidimensionnelle.

1
user79865

Réponse courte

 = TRANSPOSE (
 QUERY (
 TRANSPOSE (
 IMPORTXML (
 "" Http://chat.stackexchange.com/transcript/7/2015 /8/13",
 "//Div[@class='content']"
) 
), 
, 
 1000 
) 
) 

Explication

IMPORTXML renvoie un tableau comportant une colonne pour chaque balise span interne. Chaque lien intelligent inclus dans le message de discussion comporte une balise span.

"On sait" que QUERY rejoint les lignes d'en-tête. Comme dans ce cas, l'OP souhaite joindre des lignes, la formule inclut TRANSPOSE deux fois, la première pour pouvoir utiliser le comportement QUERY pour joindre des colonnes et la seconde pour ramener le tableau à la forme d'origine.

Référence

1
Rubén