web-dev-qa-db-ja.com

importXMLが複数の列にテキストをこぼさないようにします

ImportXMLで チャット記録 をインポートする場合、たとえば、

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

いくつかのメッセージがいくつかの列に分かれていることがわかりました。

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

これは、「google-search」が独自の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. 

しかし、私はそのような複数の列を持ちたくありません。すべてのチャットメッセージを同じセルに入れたい:

Tag-wikiには次の文が含まれています。検索について話している場合は、代わりにgoogle-searchタグを使用してください。

ImportXMLがテキストを列に分割することを防ぐ方法、またはそれらを結合し直す方法はありますか?範囲が2次元であるため、join("", importxml(...))はエラーをスローします。

1
user79865

簡潔な答え

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

説明

IMPORTXMLは、各内部spanタグごとに1列の配列を返します。チャットメッセージに含まれるスマートリンクごとに1つのspanタグがあります。

QUERYがヘッダー行を結合することは「既知」です。この場合、OPは行を結合するため、式には2回のTRANSPOSEが含まれます。1回目はQUERY動作を使用して列を結合し、2回目は配列を元の形状に戻します。

参照

1
Rubén