html Google电子表格将xml输出导入一个单元格

pprl5pva  于 2023-02-17  发布在  Go
关注(0)|答案(3)|浏览(126)

我刮从一个社区使用谷歌电子表格importxml功能的用户。
单元格=A1

http://inbound.org/members/all/top?&per_page=48

单元格=B1

=IMPORTXML(A1,"//div[@class='title name']//a/@href")

当我使用b1公式来抓取用户时,输出跨越B列中的48个单元格。有没有方法可以自定义输出?我在单元格A1上有很多入站页面,我想通过拉B1上的下拉标签来将公式应用到A1上的每个URL,但我无法这样做,因为B列已经填充了第一个抓取。
有没有办法把所有的用户名都放在B1中,用逗号隔开?
我尝试了A:A,看看它是否能一次性从A列中抓取所有URL,但我想这不起作用。

=IMPORTXML(A:A,"//div[@class='title name']//a/@href")
4ktjp1zp

4ktjp1zp1#

为什么要写一个脚本函数?有内置JOIN在谷歌电子表格

=JOIN(CHAR(10), IMPORTXML(A1,"//div[@class='title name']//a/@href"))

CHAR(10)表示换行符

mtb9vblg

mtb9vblg2#

无法让XPath表达式返回逗号分隔的值,因为GoogleSheets只支持XPath 1.0(即使在那里,支持也非常有缺陷)。
但是,您也可以编写自己的函数,以一定范围的单元格作为输入,并返回逗号分隔的字符串列表:

function rangeToStringSep(range, sep) {
  return range.join(sep);
}

这取自here。然后,在Google工作表中,使用

=rangeToStringSep(B1:B48, ", ")

并且所有字符串将显示在单个单元格中:

ss2ws0br

ss2ws0br3#

这并不保留格式,但这是一个超级快速的修复,您可以添加到您的公式在几秒钟内。
用一个textjoin封装你现有的函数,如下所示:

=TEXTJOIN(",",1,IMPORTXML(A:A,"//div[@class='title name']//a/@href")

这将把所有内容都放在您有IMPORTXML的同一个单元格中。希望这会有所帮助。

相关问题