GoogleSheets/ImportXML/XPath编码大师,
快速提问。。。两个ImportXML语句,唯一的区别是XPath聚合函数:sum有效,avg无效。
=ImportXML("http://api.eve-marketdata.com/api/item_orders2.xml?char_name=Demo&buysell=b&type_ids=17464&station_ids=60003760","sum(/emd/result/rowset/row[not(preceding-sibling::row/@price > @price or following-sibling::row/@price > @price)]/@volremaining)")
=ImportXML("http://api.eve-marketdata.com/api/item_orders2.xml?char_name=Demo&buysell=b&type_ids=17464&station_ids=60003760","avg(/emd/result/rowset/row[not(preceding-sibling::row/@price > @price or following-sibling::row/@price > @price)]/@volremaining)")
注意:对于公式中的页面,目标是找到价格最高的行。。。然后得到数量/体积和价格。然而,当有多行处于最高价格时,我需要求和(@volremaining)和avg(@price),因为我只想返回一行。我可以使用[1]偏移量来获得这个值。。。
=ImportXML("http://api.eve-marketdata.com/api/item_orders2.xml?char_name=Demo&buysell=b&type_ids=17464&station_ids=60003760","/emd/result/rowset/row[not(preceding-sibling::row/@price > @price or following-sibling::row/@price > @price)][1]/@volremaining")
但是让min()/max()/avg()起作用的练习失败了。
我一辈子都搞不清区别,除了W3C XPath站点显示的fn:avg带有双括号((arg1,arg2,arg3)),而fn:sum是单括号(arg1,arg2,arg3)。
非常感谢您的协助。
问候,
G A
Google Sheet的IMPORTXML()
函数异常有缺陷,但在这种情况下,原因不同。
IMPORTXML()
只支持XPath 1.0函数,不支持XPath 2.0函数。sum()
是XPath 1.0函数,而avg()
、min()
和max()
是XPath 2.0函数,不能在Google Sheets中使用。
请参阅XPath1.0规范的相关部分——正如您所看到的,avg()
并没有作为数字函数列出。它仅作为XPath2.0和XQuery聚合函数的一个成员列出。顺便说一句,w3schools与W3C无关,您永远不应该信任w3school的内容。
总之,avg()
在XPath表达式中不可用——只需检索所有值并使用Google Sheets函数来计算平均值。